Refactoring long polling transport to be able to fix bug #3227

I think now might be a good time to consider storing the `IConnection` and `connectionData` in fields so we don't have to pass them around everywhere.

If we were to do this, we should probably change the `IClientTransport` interface to include an initialize method that takes in those two parameters. This would then allow us to remove parameters from all the other `IClientTransport` methods.

This would be a breaking change, but I don't know of anyone implementing `IClientTransport` for any reason other than to wrap our existing transports for logging.