Add base object model

This adds the base infrastructure for a unified object model in
Nova. It provides a somewhat-magical metaclass which serves to
automatically register objects that are capable of being remoted.
Magic remoting of methods happens via two decorators, allowing
a given nova service to globally declare that such actions should
happen over RPC to avoid DB accesses.

For more details, see blueprint unified-object-model

Change-Id: Iecd54ca22666f730c41d2278f74b86d922624a4e
Merge "Add base object model"
Merge remote-tracking branch 'm_src_repo/citrix-fixes' into build-temp