IPMI double bridging functionality

Enables ipmitool bridging functionality in ironic

In ipmitool there are two different bridging argument specifications:
* single bridge (-t <target_address> [-b <target_channel>])
* double bridge (-T <transit_address> [-B <transit_channel>])
one can also specify the local IPMB address using -m <local_address>

When registering an baremetal node which requires bridging, the
appropriate parameters should be specified to ironic IPMI power
driver as follows:
-i ipmi_bridging=<single/dual/no>
-i ipmi_local_address=<value>
-i ipmi_transit_channel=<value>
-i ipmi_transit_address=<value>
-i ipmi_target_channel=<value>
-i ipmi_target_address=<value>

The parameter 'ipmi_bridging' should specify the type of bridging
required(single/dual) to access the baremetal node.
If the parameter is not specified, the default value will be set
to "no"

  Single Bridging:
    ironic node-create -d pxe_ipmitool [-i ipmi_local_address=VALUE]
    <-i ipmi_bridging=single> <-i ipmi_target_channel=VALUE>
    <-i ipmi_target_address=VALUE> ...

  Double Bridging:
    ironic node-create -d pxe_ipmitool [-i ipmi_local_address=VALUE]
    <-i ipmi_bridging=dual>  <-i ipmi_transit_channel=VALUE>
    <-i ipmi_transit_address=VALUE>  <-i ipmi_target_channel=VALUE>
    <-i ipmi_target_address=VALUE>  ...

The parameter 'ipmi_local_address' is optional. If the
parameter is not specified, it is auto discovered by ipmitool

Implements blueprint enabling-ipmi-double-bridge-support

Change-Id: I78e024a6205b0a87e50fbf0d93e69ef415be0934
Merge "IPMI double bridging functionality"