Propagate TDReplicator error through CDTReplicator to User

Removed CDTReplicationErrorInfo
Changed CDTReplicatorDelegate to use NSError instead of CDTReplicationErrorInfo
Merge pull request #41 from cloudant/27390_TDReplicator_error_propagation

Propagate TDReplicator error through CDTReplicator to User
Moves the TD_FilterBlock from TD_Database to TDPusher.

Previously, a TD_Database managed all filters associated with that
database in a local NSMutableDictionary. This has been removed and
now the TDPusher class holds a copy of the block which defines the
filter.

These changes are reflected in the CDT* level classes.

*filterId is removed from CDTPushReplication
*CDTReplicator is now initialized with an instance of an
CDTAbstractReplication class instead of its NSDictionary representation.
(This doesn't affect the API since this is a 'private' instantiation method.)
*CDTReplicator maintains a copy of a CDTFilterBlock
*CDTReplicatorFactory -oneWay was modified accordingly.

Note: Should I remove CDTReplicatorFactoryErrors as these are not used
anymore?
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.

CDTReplicatorStatusStarting was added. The state is set to 'Starting'
when CDTReplicator -start is called. When the TDReplicator is queued
on the replication thread and started, the state should be updated
to 'Started' once the -replicatorStarted method is called by the
NSNotification center.