Added UIDGenerator class for getting statistically unique IDs.

* This is useful for making IDs for object in partitioned stores.
* The "UID" functions are not called "UUIDs" since they don't follow RFC4122.
  This is for performance reasons since the ID fields tend to be indexed.
* This includes newUUIDv4(), which is compliant with the aforementioned RFC.

This reverts commit 86f895bfe395d9fe00792422b052e7ebf43c7ae9.

Change-Id: I989626dfb7976d17f5931a34fe040f41cf14dfe3