syncbase java high-level API impl: mo' bits

- implement Database.acceptSyncgroupInvite
- implement Database.runInBatch
- fill in SyncgroupInvite based on what's needed for joining
  a syncgroup (though perhaps some of these bits will need
  to move elsewhere)
- make watch and invite handler management APIs thread-safe
- expand Database, Collection, and Syncgroup class comments
  a bit to indicate how to obtain a handle for each of these
- make some classes static that should've been static
- make Syncbase.database and Database.acceptSyncgroupInvite
  methods async, as was intended with the API design
- add FIXME to define Exception subclasses for errors that
  clients may wish to handle
- add description of (proposed) userdata syncgroup schema
- implement userdata collection creation for the case where
  disableUserdataSyncgroup=true - bringing the API closer to
  usable state assuming one device per user

Change-Id: I6ff488182858b23743889651754d9adad72ceb16
7 files changed