Add UEFI based deployment support in Ironic

Most of the new hardware comes with UEFI boot mode, which has several
technical advantages over the traditional BIOS system.

Operator inform the boot mode to ironic using the "capabilities" property
of the node.  The operator may add a new capability "boot_mode=uefi" or
"boot_mode=bios" in "capabilities" within "properties" of the node.

Add new pxe config options:
  - "uefi_pxe_bootfile_name": specify the efi bootloader to be used.
  - "uefi_pxe_config_template": specify the respective efi bootloader config
    template.

As of now only elilo.efi bootloader is supported.

elilo.efi bootloader requires the configuration file to be named after the
ip-address assigned by the DHCP server.

Implements: blueprint uefi-boot-for-ironic
Co-Authored-By: Jim Rollenhagen <jim@jimrollenhagen.com>
Change-Id: I0ad399b2207d7c66f6887e56470ba553b3c87b53
Merge "Add UEFI based deployment support in Ironic"