Add JSONRPCClientFactory.{connect,notifyDisconnect}

`JSONRPCClientFactory.connect` returns a `Deferred` that fires after the connection has established, without having to wait for a request to be made. `JSONRPCClientFactory.notifyDisconnect` returns a `Deferred` that fires when the connection is lost.

Additionally, this removes the ability to pass arbitrary keyword arguments to `_getPayload`, so that arguments like `timeout` and `retryCount` can be passed as named arguments without a wacky prefix. A `dict` can be passed as the first positional argument to get the same effect as previously.