While running unit tests, came across a case where "Cancel()" could be called after the object was disposed since the value was not null.
When syncing with CouchDB (in the iOS 8 Simulator) the initial linq query would return 2 values.  The first value would be an actual header value, the second value would be null, thus causing an exception in String.Join.  Added the where clause to filter out any null values.
There seemed to be a missing AsyncTaskStarted call in the MaybeCreateRemoteDB() method.

The id's that Couchbase Lite generates and the id's that CouchDB return don't match case, to had to change from a "Contains" to case insensitive search.
Merge pull request #274 from jonlipsky/couchdb_sync_issues

Couchdb sync issues