Allow public objects to be bound to a dispatch queue

By setting the CBLManager’s dispatchQueue property, the manager and the
objects it creates will run on that queue instead of the thread it was created on.
Most importantly this means that callbacks like notifications and model autosaves
will be scheduled on that dispatch queue.

Also added the related method -[CBLDatabase doAsync:] which runs a block
asynchronously on the database’s thread or dispatch queue. This can be called
from any thread.