Addresses comments in the GH PR and adds new features.

This commit will be squashed before merging.

Newly added in this commit:
CDTAbstract/Push/PullReplicaion adoped the NSCopying protocol. This
ensures that the CDTReplicator object, when created, is isolated
from any modifications to the CDT*Replication objects that were
used in its instantiation.