Add methods to ipmitool driver

This commit adds three 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'.

* set_bootparam: used to set boot flags on the machine, for example
  force_disk. Takes one parameter, 'flag', which is the flag to set.

* 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.

Change-Id: I508eabae7428daea29d749bb2aa9fc9c5a357e8c
Factor out TFTPImageCache

Moves TFTPImageCache class into ironic.common.tftp module, and
moves the config option pxe.tftp_master_path to
tftp.tftp_master_path.

Also moves the image_cache module from ironic.drivers.modules to
ironic.common.

This is part of a larger refactoring effort to factor out image
caching and TFTP code that is common to the PXE and agent drivers.

Change-Id: I0b3437a8eb40390d0769bde0afa37abaaad95b3d
Factor out deploy info from PXE driver

This factors the code to get the deploy kernel and ramdisk info out
of the PXE driver, as this can be shared between the PXE and agent
drivers.

Change-Id: I2c3722d091f02259aa9e6cabebaabf25eead8bc2
Adding swift temp url support

This patch will allow properly configured Glance servers to return a temporary
URL for an object hosted on Swift. It will require Glance to use Swift
as its backend. A temporary URL will let the agent download an image from
Glance without requiring an auth_token, which gives access more than just
Glance. The easiest way to use it is to enable direct_url in Glance, but
you can set the appropriate config options to avoid needing to enable it.

We/I need to add a note in the docs about Swift being a possible dependency
for Ironic deploys using IPA, along with how to set the Temp URL key.

Swift perfomance concerns will be addressed in this blueprint:
https://blueprints.launchpad.net/ironic/+spec/improve-swift-agent-downloads

SecurityImpact
DocImpact

Implements: blueprint swift-temp-urls
Change-Id: I10e4784eee63e8edc9ba30a9c5004a08aa3a6d8e
Add ironic-python-agent deploy driver

This commit adds a deploy driver for the ironic-python-agent
project. Caveats:

* Only basic functionality (deploy and tear_down) is implemented.
* Only whole disk images are supported.
* This will not work with current master branch of IPA.

Implements: blueprint agent-driver

Change-Id: Iebf8d8f756770549d6fcd1bb2fe94d2585d576b1
(cherry picked from commit 1c5835fa616128b1a01c9ed8f4dd4ef1ca8c525e)
Merge branch 'review/jim_rollenhagen/decom-agent'