Import serialization and nesting from Nova Objects

This change mostly merges the following commits from Nova:

e91c3d141c957485dcb66c73e84b41b775e4268b
f1c4b8e5f34eb6b5e70da6711750dcf05cea8c0a
65f6c536fecd3c788b2e0dfa9d66ecd24ca550e1
92a3190128547403dc603e5a40e377c6eb0c8025
68cb4d53385821c3ffdc40c299a77d11a7f98f27

Change-Id: I0a16f45674f5d14f458e2bb490d909a9086ea8b4
Merge "Import serialization and nesting from Nova Objects"