33513 pull replication by document id

Do pull replication with a subset of document IDs.

The user configures clientFilterDocIds on the CDTPullReplication object; this is an array of document IDs.

Internally, the sets clientFilterCurrentSetDocIds (doc IDs for inclusion during pull, for which we already have at least one rev in the database), and clientFilterNewDocIds (doc IDs for inclusion during pull, which we don't yet have in the database) are used.

Lots of things are missing right now, especially an updated remoteCheckpointDocID method whose input to the hash function should the doc ID list.
Since we are always assuming that developers always interact with the CDT* level and we provide no support/checks for developers that decide to interact with the TD* level code, we are protected from the possibility of creating a TDPusher object with the property "client_filter_doc_ids". Only the CDTPullReplication's -dictionaryForReplicatorDocument method will produce this property. If a dev wants to try this, they are welcome to do so since we offer no guarantees / instructions for using the TD* code.  (Additionally, a dev could subclass CDTPushReplication to modify -dictionaryForReplicatorDocument and they might be able to create a Push with filter by doc ID.... )

However, if we override -addToInbox in TDPuller and move over the NSArrays, and also add a [repl isKindOfObject:TDPuller] to this if-statement (or some sort of check here to only allow TDPuller objects to be initialized with a "client_filter_doc_ids" property), then I think we can make it impossible to create a TDPusher with filter by doc ID.