Return better error when RESTOperation fails auth

If using RESTOperation to talk to a remote server (not TouchDB), if no credential can be found for an auth challenge
it should call -continueWithoutCredentialForAuthenticationChallenge: instead of cancelAuthenticationChallenge:.
This will ensure that the error seen by the client is an HTTP 401 instead of "NSURLErrorDomain error -1012".
Fixed a race condition with doc update notifications

If changes happened quickly enough, it was possible for the onCompletion block of a document save operation
to be called _after_ the document got an external-change notification of a _later_ revision. (This occurred with
CouchPersistentReplication on its initial save -- the replicator manager immediately updates the document with
a task ID and "triggered" state, and this change was arriving before the model was told it had finished saving,
so it wasn't ready to respond to external changes yet.
Fixes https://github.com/couchbaselabs/TouchDB-iOS/issues/187 , I think.
Added -installCannedDatabase:withAttachments: method

Allows you to ship a database file with an app and then install it on
the first launch.
Added API for creating persistent replication even if one already exists

This allows for multiple replications with different filters, between
the same databases.
Added -[CouchDocument refresh] for use with remote servers without tracksChanges

It will validate the cached currentRevision, if any, against the server and update it if it changed.
Support for using TouchDB on multiple threads

* CouchServer is now copyable. Call -copy to make a new instance to use on a different thread.
* +[CouchTouchDBServer sharedInstance] should only be called from one thread since it returns only one instance. Added an assertion to enforce this.
* Fixed implementation of -init to simplify it and prevent problems if there are multiple TouchDB instances open.
Updated README.
Merge branch 'refs/heads/upstream_master'