Adds functionality to try to cancel a replication before it starts.

A user of this object calls -tryToCancelReplicator:(TDReplicator *)

This is implemented with two internal NSMutableDictionary objects that
track if the queued replicator block is executed and if a caller tries to
stop that execution. Read/Writes to both dictionaries are wrapped in
@synchronized(self) blocks in order to guarantee success or failure.
Modifies -stop and -startWithError to ensure proper state when
a caller attempts to stop a replicator before the replication thread
executes or if -stop is called before -startWithError. This makes
this class more thread-safe and covers the edge-case where a
replication thread blocks for some reason and the user wishes to
prevent the replication from starting.

The -stop method was modified to return YES/NO to indicate that
it was successful/unsuccessful in stopping the replication from
starting. It is now guaranteed to be successful or unsuccessful,
rather than its previously ambiguous and misleading effectiveness.

Addtionally, modifications to CDTRepiclator.state are wrapped in
@synchronized blocks in order to guarantee the object's state
during -stop, and the NSNotification callbacks from TDReplicator.