Test for bucket to handle merging changes

Instead of RemoteChange maintaing object state, the bucket will handle applying diffs with local modifications.

See #67
Remote change no longer concerned with Syncable
Additional bucket tests for remote changes without local modifications
Bucket.applyRemoteChange transforms local modifications

Fixes #67
OnBeforeUpdateObjectListener

Called prior to modifying a bucket object instance when receiving a change that originated from another client.
Fixed bug from using the source string

Fixes #67