Changes the CDTReplicator -start signature.

-(void)start becomes -(BOOL)start:NSError**

Errors created by TDReplicator objects are propaged from
TDReplicatorManager. They are reported to the Log (via Warn),
but new CDT-level errors are reported to developers using the
CDT API.
When I wrote it, I thought that it shouldn't be possible and I was being purposefully overcautious. My experience has been to avoid assumptions like this -- especially when using code like the TD* which we've gutted and reworked.
 
I thought for a moment that it could be possible with multiple threads modifying the CDTAbstractReplication object. However, one cannot alter the source/target of a CDT*Replication object after instantiation, so it's safe. (It will be even safer once the CDT*Replication classes can be copied.)

So it's more of a sanity check and to protect against future external code changes (to TDReplicator, TD_DatabaseManager or CDT*Replication classes.) For example, here is the key line of code that determines if its a TDPusher or TDPuller. https://github.com/cloudant/CDTDatastore/blob/master/Classes/common/touchdb/TD_DatabaseManager.m#L238). 

Maybe I'm being overcautious here.
 
What do you think? How do you determine the threshold between writing a sanity check for every line of code versus trusting?