Adding Overlords agent-client

Also adding in some errors and encoding from teeth-rest. I simplified the
agent client to be its own object.
Fixing a few errors
Use Ironic exceptions and json
flake8 fixes
Pinning pyghmi (latest version is broken) and ironic
Use Ironic exceptions and json
flake8 fixes
Pinning pyghmi (latest version is broken) and ironic
Using Ironic exceptions

Getting rid of RESTError and using IronicException as a base. Also modifying
the exceptions to look like Ironic exceptions and be translatable.
Merging exceptions
Using Ironic exceptions

Getting rid of RESTError and using IronicException as a base. Also modifying
the exceptions to look like Ironic exceptions and be translatable.
Using hacking to avoid flake issues with _
Moving to Ironic style exceptions

Removed RESTError in favor of IronicException. Using the translatable
exceptions that they use.
Merge pull request #3 from rackerlabs/JoshNang/add-teeth-agent

Adding Teeth Agent Client
Merge branch 'master' of github.com:rackerlabs/ironic-teeth-driver

Conflicts:
	ironic_teeth_driver/exceptions.py
Implement the TeethDeploy driver for Ironic

The design here is that the agent will boot via PXE and check in with with the
driver to see what it needs to do. We control this with node.provision_state
and node.target_provision_state. Thenode will be told it needs to decom,
cache, or run an image. The reason for the change is conductor doesn't
seem to be running on gevent so async is out. We still need to write an API
controller to let the node talk to the driver, and a TeethPower driver to
power on/off the machines.
Reimplementing separate prepare and run image
Adding basic deploy driver
Adding deploy driver
Using ironic IPMIPower driver for deploy