Issue #59 -- Port BatcherTest

- Ported BatcherTest from Android
- Synced the code between Batcher.cs and its upstream Android implementation
add waffle.io badge
[Tests] TestRemoteConflictResolution now passes

- Ported ReplicationTest.TestRemoteConflictResolution
- Fixed Puller bug that deleted revisions were not deleted from the
local storage.
Allows for 0 changes to be valid result of Update.
Use extension methods, allow Delete to result in 0 changes.
Adds storage engine locks, no longer crashing w/ sigsegv.
Shortened wait timeouts, fixed test deadlock, add Cursor locks.
Misc cleanup.
Added a missing null check.
Make TestRunReplicationWithError and TestGetReplicator pass

- Use MockHttpClientFactory in TestRunReplicationWithError
- Fix TestGetReplicator by adding sleep for one second to wait for all statuses to get updated after calling replicator.Stop() method
- Fix Replicator not calling complete handler when the task gets cancelled which causes AsyncTaskCount not getting updated.
- Fix AsyncTaskStarted() method that UpdateActive() not getting called.
Added ToString override for better debugging.
Removes remnant from old iOS binding.
Cleanup to Manager, Sqlite Storage Engine.

Allow users to provide a scheduler to use for invoking callbacks. Otherwise, the current synch context's scheduler is used. This is now configured via ManagerOptions.CallbackScheduler.

SqlitePclRawStorageEngine was swallowing exceptions, and these are now rethrown after logging them. As a result, Compact no longer works, as VACUUM now throws an exception.”
Fixes #87

Ensure that BuildCommand uses the correct prepare
statement. Also fixes one hanging statement that
wasn't closed.
Unit tests now pass on Android > Release builds.
Fix issue #78

- Fix deadlock caused by ReRunUpdateQueryTask and UpdateQueryTask are waiting for each other due to the shared UpdateQueryTask and UpdateQueryTokenSource variable.
- Synchronize Update method
Fix issue #81

- Add upperbound sequence to the select statement that will get the list of the documents to be indexed.
- Create a test case to reproduce the issue #81
New fix for issue #81

- Instead of putting a upperbound for sequence number which could has a
side effect that sometime there could be less or no documents indexed,
we can just check if we have a new max sequence from the actual
documents that are indexed and use the new max sequence accordingly.
- Rename ViewsTest.TestViewUpdateWithLiveQuery to
ViewsTest.TestViewUpdateIndexWithLiveQuery and reduce the sleeping time.
Merge branch 'port-batcher-test'

Conflicts:
	src/Couchbase.Lite.Tests.Shared/Couchbase.Lite.Tests.Shared.projitems
Merge branch 'master' of https://github.com/xamarin/couchbase-lite-net