Channel doesn't schedule work if all local changes are waiting for acks
Allow custom executor for MockBucket
Log messages to device log
MockExecutor.Playable can be paused and played

When playing it behaves just like MockExecutor.Immediate
Use custom executors for MockBucket and ChannelTest to control execution
Test to reproduce #58

This shows that we're sending a remove operation when we shouldn't be.

```
com.simperium.ChannelTest > testReceiveRemoteRemoveOperation[XT1058 - 4.4] FAILED
	junit.framework.AssertionFailedError: Expected: <null> but was: c:{"id":"mock1","o":"-","ccid":"ae36ebd59b3b4df3b2f27eb85aaf5a8c"}
	at com.simperium.ChannelTest.testReceiveRemoteRemoveOperation(ChannelTest.java:511)
```
Add method that identifies where remove operations originate

If a remove operation originates from a different client, then `Bucket.remove(object, false)` will eventually be called which prevents a remove operation from being generated from the client.

Fixes #58