Fix issue where request id is not relayed

When the router returns another client (in order to relay requests) the
id of the original client was being ignored and a new one generated.

Now the request id of the original client is being forwarded all the way
to the routed-to client.
Updated tcp client to handle notifications

This is a non-backwards compatible change for JSON-RPC 1 as we now keep
the connection open idefinitly.
We need to do that in order to be able to recieve notifications (as we
cannot predict how many there will be).
Send proper error when closing connection

All outstanding requests should fail with an error, previously they
failed without error.
Merge branch 'bugfix/accept_v1_errors'
Merge branch 'feature/handle_server_notifications'