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