Add RPC methods for updating nodes.

By having the API service use an RPC call to the Conductor,
we can take an exclusive task lock on the node being updated.
This will prevent updates to a node while a task is in process on it.

This is the first method implemented using RPC of a versioned
object to provide distributed locking between API and Conductor
instances.

This patch also clarifies the description of node state changes
in states.py, and does a minimal amount of reasonable checking
to ensure that nodes do not get put into inconsistent situations.

It also adds some unit tests to the API for both the new method
and for get_all, which already existed.

Change-Id: I8364ef19bfe177d56ec7bc1c0f1e166125a20ec5