Prevent IPMI actions from colliding.

Prevent IPMI actions from colliding with eachother, even if they are
issued to the API in parallel, by adding @require_exclusive_lock
decorators to public methods of the IPMIPowerDriver.

Change-Id: Ic5c12ff6a399b637eccb82c6ffd7e9c575f4edc4
Add ssh power manager.

Converting nova's virtual_power_manager for use by ironic

Implements: blueprint virtual-power-driver.

Change-Id: Ie24564e349aca863578955385f084f1be8b0b053
Authored-by: Devananda van der Veen <devananda.vdv@gmail.com>
Authored-by: Chris Krelle <nobodycam@gmail.com>
Restructuring driver API and inheritence.

Based on discussions after the Ironic meeting on June 03,
this is a re-working of the driver API.

Highlights:
- no more deploy + control driver; nodes have one and only one driver.
- interfaces for core, standard, and vendor functionality now clearly
  defined in the driver API.
- improve fake driver to demonstrate use of interfaces.
- convert ipmi and ssh driver classes into interfaces.
- stub for the pxe interfaces.
- stub implementations of pxe+ipmi and pxe+ssh drivers.

Also includes some cosmetic cleanup of test_ssh.py and test_ipmi.py.

Change-Id: I057ede8e07b1b57010e81ef58415debe0ba8b934