Add iPXE support for Ironic
Add iPXE support for Ironic

As the size of our deploy ramdisk would continue to increase (Ironic
Python Agent) we need a more reliable way to transfer such data via
the network without relying on TFTP. The problem with TFTP is that it's
unreliable and any transmission error will result consequently in boot
problems. This patch adds support for iPXE so that we have the ability
to transfer data through HTTP which is a reliable protocol.

New configuration options added to the 'pxe' group:

- ipxe_enabled: Whether iPXE is enabled or not
- ipxe_boot_script: The path to the main iPXE script file
- http_url: The HTTP server URL
- http_root: The HTTP root path

Two functions from pxe.py were renamed because they are not related only
to tftp anymore:

- _get_tftp_image_info renamed to _get_image_info

- _cache_tftp_images renamed to _cache_ramdisk_kernel (because that's
what this function is about, it fetchs the kernels and ramdisks associated
with the image, not the image itself)

Implements: blueprint ipxe-boot
Change-Id: I8dc7640a19374a9c4d687877ea6c0ff1ebc13979

openstack/ironic-lib,faizan-barmawer/ironic-lib,faizan-barmawer/elytics,citrix-openstack-build/ironic-lib,NaohiroTamura/ironic-lib