java/syncbase: Join Or Create Userdata. UUID collection+syncgroup

Userdata will avoid the syncgroup merge issue by using a join or
create pattern. This collection should be used if one wants to
have a user-only collection.

db.collection(name) => db.createCollection()

Every non-userdata collection name will be assigned a UUID.
Syncgroups will use the same name, and thus avoid the merge
problem.

Drawbacks:
- Watch is a little harder since you can't expect any particular name,
  only a prefix (if you specify one).
- Collection creation in a batch is also a little harder to use since
  we are no longer idempotent when calling db.collection.

Change-Id: I35bc93519667110914ea7c52c95cb6c006ee3bb8
7 files changed