Refactoring ObjectCache into ObjectCacheProvider and moving to ClientFactory

Allows client implementations to provide the object caching mechanisms.
Add support for testing.
Whitespace fixes
Adding property accessor on BucketObject
Whitespace formatting
Refactoring SyncService to be provided by client implementations

- allows tests to be run in a single threaded implementation
- potentially other platforms would prefer different threading options
MockSyncService now properly implements interface
Updating MockClient to use updated ClientFactory
Adding basic high level bucket test
Turn off autoIndex of default buckets
Test using alternate BucketStore for specific buckets
Continuing refactor of ClientFactory

- Moving each component interface into their own files
- Renaming Bucket.ChannelProvider interface to Bucket.Channel