Make user_version a first-class citizen

This branch makes user_version a first-class citizen in the OSD versioning scheme, and propagates that out through the client interfaces. Besides tightening up the versioning semantics some, it is motivated out of a need to logically separate the pg version and user version down the road for pool caching (in which objects can get moved between pools but need to expose versions to the clients that still make sense).
An earlier version of this branch has already been reviewed by Sage Weil <sage@inktank.com>; since then I've cleaned up the commits some, added the doc file, and merged master back in for a trivial conflict in librados' AioCompletion.