Improve RPC error handling

* Read the error stream with getErrorStream()
* Throw useful error info with JsonRPCStatusException
* Update throw/catch code everywhere :(