Adds ability to set optional HTTP headers in requests made during replication

Allows one to set optional HTTP headers for replication during the configuration
of the CDTPull/PushReplication objects.

Fixes a bug in TD_DatabaseManager.m that prevented headers to be set via
the 'properties' NSDictionary object used to create TDReplicator objects.

Adds tests for HTTP headers during replication

ReplicatorURLProtocol inherits from NSURLProtocol and is
a registered URL request in order to gain access to all
NSURLRequests made during replication.
This class does not manipulate or handle the HTTP requests, but
it does pass the NSURLRequest to a delegate to object that
tests the headers.


I think the code would be simpler if you just had a for-in loop which went through the prohibited headers rather than creating the sets. Given the small sizes of the arrays involved, you're gaining little from using sets.

I'd also just create your prohibited headers as lowercase to start with, it seems like needless work to ask the computer to do it for you.

```objc
for (NSString *header in prohibitedHeaders) {
  if ([lowerHeaders indexOfObject:header] != NSNotFound) {
    // collect a list of all the forbidden headers so they
    // can all be displayed, rather than just doing one at once.
  }
}

if (/* list of forbidden headers found contains something */) {
  // set up the error
  return nil;
}
```