Fixes several api and replication test issues.

1. Fixed TestPuller() failure due to 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: issue #27 and issue #35. The solution was
ported from
https://github.com/couchbase/couchbase-lite-java/blob/master/src/main/java/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 using the context thread to return the result.
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 using the context thread to return the result.
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 using the context thread to notify changes.
6. Fixed iOS and Android sample project according to 3, 4, 5 above.
7. Update .gitignore to exclue .xam files.