Fixes several api and replication test issues.

1. Fixed TestPuller() failure due to several bugs in
MultipartDocumentReader and MultipartReader.
2. Refactored MonoSQLiteStorageEngine with a single connection pool and
threaded-bound nested transaction support. This fixed solves 2 issues
that we are facing : [1] issue #27 and issue #35. The solution was
ported from
https://github.com/couchbase/couchbase-lite-java/blob/master/src/main/ja
va/com/couchbase/lite/storage/JavaSQLiteStorageEngine.java.
3. Reverted Query.RunAsync to return the result with its own thread
instead of the context thread from Manager object. This is inline with
the Android implementation. This change will unlock
ApiTest.TestAsyncViewQuery() failure. We should discuss and rethink
about this.
4. Reverted LiveQuery.RunAsync() to return the result with its own
thread instead of the context thread from Manager object. We should
discuss and rethink about this.
5. Reverted Replication.NotifyChangeListeners() to notify changes by
using its own thread synchronously instead of context thread
asynchronously. This is inline with Android implementation as well.
Without reverting, ReplcationTest.TestGetReplication will be always
failed as the number of active replicators after calling the replicator
to stop will not get updated immediately. We should discuss and rethink
about this.
6. Fixed iOS and Android sample project according to 3, 4, 5 above.
7. Update .gitignore to exclue .xam files.