Makes CDTAbstract/Pull/PushReplication conform to NSCopying.

This ensures that the replication configuration cannot change after
the instantiation of the CDTReplicator object, which could cause some
bugs.

The other PRs overlap only a bit with this -- CDTReplicator.m  But it will be easier to wait for the ones before it and rebase after they are merged.
Ditto allocWithZone