Add methods to ipmitool driver

This commit adds two methods to the vendor interface for the
ipmitool driver:

* send_raw: this is used to send arbitrary bytes to a BMC. One
  example of a use case for this is: many BMCs fail in strange ways
  when 'chassis bootdev disk' is sent without first sending a
  certain sequence of bytes. This is common enough that pyghmi
  even does this by default. Takes one parameter, 'raw_bytes',
  which is the string representation of which bytes should be
  sent. For example: '0x00 0x01'.

* bmc_reset: used to reset a BMC. A cold or warm reset can be
  selected by setting the warm parameter to False (cold) or True
  (warm). Defaults to warm.

Closes-Bug: 1340199
Change-Id: I508eabae7428daea29d749bb2aa9fc9c5a357e8c
Add IloDriver and its IloPower module

Add a new ironic driver for managing HP Proliant Gen8 servers
using iLO4. This commit introduces the power module for
IloDriver.

Implements: blueprint ironic-ilo-power-driver
Change-Id: I8d521f67fb14a6132626782b05cd490cd42ba476
Co-Authors: Anusha Ramineni<anusha.iiitm@gmail.com>
Raise appropriate errors on duplicate Node, Port and Chassis creation

This patch introduces NodeAlreadyExists, ChassisAlreadyExists,
PortAlreadyExists and InstanceAssociated exceptions for
appropriate cases.

Partial-Bug: #1277555

Change-Id: Iec2a7cd09022b6a12afacec9b9b51f8197817ded
Merge "Add methods to ipmitool driver"
Merge "Add IloDriver and its IloPower module"
Merge "Raise appropriate errors on duplicate Node, Port and Chassis creation"