Way early hacky PoC of object model silliness

Changes:
 - Assume some config variable that we can use to know if we're remote
 - Decorate methods we want to be remoted with the @magic helpers
 - Put the actual DB implementation in the objects
 - Provide some transparent proxy thing to use from the magic helpers
 - On the server (conductor, or whatver) side, look up and call the
   methods that are remoted

Change-Id: Iecd54ca22666f730c41d2278f74b86d922624a4e
Serialize objects on the way out of the hacked conductor helpers

Change-Id: I68e5463c91a41b4b6e8a42b54cbf5aa1fd2629ff
Communicate changed fields in primitive format

Change-Id: I188d1ffb2394fe54025dd63454dac2373514594c
Make Migration object correctly implement save

That means using changed fields and constructing updates.

Change-Id: I3d2ffa04d4e40b25de0c0d9d4c9c6d36a5928758
Reset changes in a couple of unit tests after priming the object

Change-Id: I0f629e2e329bf793ef73ee514148acece99597ae
Apparently a set() can't be serialized, use a list.

Change-Id: I9e3f8b0090d63e3076afddc211d7a69de684bab1
Let objects define per-attribute serialization methods

Change-Id: Ied9a34fd7081e5567e84ee4eb606d4863a33bc86
Add an initial stab at an Instance object implementation

Change-Id: Ide10c6f994957f994fee3a4c72608684551b3d60
Add object versioning

This makes object versions work much like RPC versions, but they're
kept and honored per-object, and automatically exchanged by the
lower layers so that we don't really have to think about them much,
other than bumping when we change something.

Figure that a major version would be required anything goes away or
changes format, and a minor bump any time we just add something.

Change-Id: Ib30cecaaf3f45f465d25a4bd51a68eba37d79e3c
Add a bunch of tests and fix some issues

This reorganizes some tests, provides an easy way to test remoted
methods, and adds tests for some things that were lacking (like
Instance). It also, of course, fixes some things found in the
process.

Change-Id: Iaed711b70af518da3f1445acff005c18d42ab25a
Sync RpcDispatcher and RpcProxy from Oslo

(presumptive at this point, of course)

Change-Id: Ic381221a4a7869e9a008a322ebca0e7ee21b36ff
Use Oslo-provided RPC serialization hooks for dispatch and proxy

Change-Id: I4c6353d30d61722f9522d12a7a4416bcb799c295
Change how objects know whether to be remoted

This removes the module-level flag for "are_things_remote" and
instead adds an attribute to the NovaObject metaclass which,
if None means things are local and if not None, holds an API
which can service our object requests.

Change-Id: I99bc50cbf7a2cc52c6cec152a2158d42a506fdd7
Clean up RpcProxy stuff

Move the magic methods into conductor's rpcapi and clean up the base
object-aware proxy class so that it can actually be used. Make the
nova-compute process install the indirection API for itself if
use_local=False so that we can actually start using objects places.

Change-Id: I6bd65c59a60bfb7cfbac41103ae4fd097551bea9
rough idea for db_impl