Reworks Node validations

This makes use of the mandatory option and complex types of WSME to
remove some of the custom validation code. The patch also includes a
new attribute on Nodes API object called chassis_uuid to store the UUID
of the chassis that Node belongs to, once this field is set it magically
converts the UUID to the numeric ID of the chassis and sets the chassis_id
attribute to be used internally.

Change-Id: Ie51761a3b9a018d101a6335ea7bafb09393816d4
Closes-Bug: #1252213
Partial-Bug: #1223847
Reworks Chassis validations

This makes use of complex types validations of WSME that now works.

Change-Id: I5cd46d5c2caeb3f3c4cd1ef90448e7fd3c81404d
Closes-Bug: #1223847
Refactor /node/<uuid>/state

* Ironic now has a periodic task that checks the current power state of
the nodes[1] and keep the db updated, so the API does not need to call
rpcapi.get_node_power_state,  it can just rely on the current status in
the DB.

* The API will now return all the states in one request, whereas before
two requests were needed (one for power, and one for provision) to get
all the state information.

* Rename /node/<uuid>/state to /node/<uuid>/states (plural) since it
returns information about both states (power and provision)

[1] https://review.openstack.org/#/c/56530/

Change-Id: I9623a378f8743d4146a9b389d28d4f8b02aaf0e0
Merge "Reworks Node validations"
Merge "Refactor /node/<uuid>/state"
Merge "Reworks Chassis validations"
Improve method to get list of active conductors

To facilitate the consistent hash ring, we must know not only what
conductors are active, but also which driver(s) each active conductor
supports. This patch renames list_active_conductor_drivers to
get_active_driver_dict and changes the return value to be a dict,
mapping drivers to the set of hosts which support them.

blueprint instance-mapping-by-consistent-hash

Change-Id: Ie327aa7d9207f6f5da1380631dbbc431dfd7e218
GET /drivers to show a list of active conductors

Make the GET /drivers return not only the name of the drivers but also
a list of active conductors that supports each driver.

Change-Id: I9646b84e266665e23c62ca11cb58c35cf2803c10
Merge "Improve method to get list of active conductors"
Merge "GET /drivers to show a list of active conductors"