Fixed nasty bug with change-log generation that caused duplicate entries

addChangeLog() -- which saves a new channel log if one doesn't already
exist -- was not running on the same goroutine as the channelLogWriter
that makes all other changes to that channel log. That meant it could
add the channel before the entries got written, and then the entries
would be appended to that channel as duplicates.
Change to support clients handling the "removed" changes-feed property

When a doc becomes inaccessible to a client, the client sees one last
_changes feed entry for the doc, with a "removed":true property. The
client will GET the revision as usual. The gateway shouldn't return an
error, even though the doc isn't accessible; instead, as with a deleted
doc, it should return a body with no contents except a "_removed"
property.
(The reason the client needs to get the revision, even though it knows
there isn't anything in it, is that it needs to see the history so it
can incorporate it into the revision tree locally. It wouldn't need to
if the _changes feed included this, but it doesn't. The only way to get
it is to GET the document itself.)
This is for issue couchbase/couchbase-lite-ios#29