Removing SyncService interface

- Removes interface
- Removes BasicSyncService implementation

refs #51
Replace uses of SyncService with Executor

Refs #51
Replace use of BasicSyncService

Refs #51
Update mock uses of SyncService

refs #51
Use MockExecutor in unit tests

Refs #51
Identiy tests that operate on arrays
Test to reproduce #57

JSON objects have same k/v pairs in different order and inside an array.
JSONDiff uses it's own equals method to compare arrays and objects

Two `JSONObject`'s with same key-value pairs but in a different order are still equal. And two arrays containing these respective objects are equal as well.

For now we are using the string representations of these objects for equality comparison since they sort the keys alpha-numerically but it is potentially a performance issue.

Fixes #57
Implementing JSONDiff.equals for JSONObject and JSONArray

Performs deep comparisons for equality.

Fixes #57
Use java generics for JSONObject key iterator
Merge branch 'develop' into feature/executor
Removing SyncService interface

- Removes interface
- Removes BasicSyncService implementation

refs #51
Replace uses of SyncService with Executor

Refs #51
Replace use of BasicSyncService

Refs #51
Update mock uses of SyncService

refs #51
Use MockExecutor in unit tests

Refs #51
Injecting ExecutorService into Channel

Channel no longer maintains it's own thread. Instead it's given an executor service to perform work on.
sendChange now throws exception when it can't send

The return value was ambiguous.
No longer need to explicitly stop processor
Cleaning up code