refactor: Improve indentation and consistency
feat: Use custom errors
feat: Throw error if parse failed
feat: Add RPCError

Breaking!
Before errors from rpc(unauthorized, invalid params) came
with response body.error:
{
	"jsonrpc": "2.0",
	"error": {
	  "code": -32602,
	  "message": "Invalid params.",
	  "data": "Not authorized"
	},
	"id": 2
}
But on the callback the first param of error was null.
Now IF there is a error in the response it is duplicated to the first
parameter as a ZabbixRPCError.
feat: Expose errors
feat: Make sure body is rendered before reading error prop
test: Test the module