Make NovaObjectSerializer work with dicts

Previously we would only look at dicts when deserializing and only to
make sure if it is in fact a serialized version of an object.

This patch makes the NovaObjectSerializer treat dicts as iterables and
attempt to serialize/deserialize them recursively. This behaviour is
needed for some of the cells RPC proxy calls that would make a dict out
of all the kwargs to a standard RPC call and then pass it to the client
like that (likely done to avoid having to bump versions of cell RPC calls
whenever we do it for the corresponding non-cell one). Without this
change tho - we can't have objects in any of such calls as they would
not get serialized.

We also change how @remotable decorator treats update dicts it gets back
from the object_action rpc call, as any fields that are ObjectFields,
and were updated during the remote call in the conductor, would have
already been hydrated by the NovaObjectSerializer's new feature.

Part of blueprint: compute-manager-objects-juno

Change-Id: I8560b692f7150bb01bc2a3ca49b264e587a1e5d1
Merge "Make NovaObjectSerializer work with dicts"