Refine JSON parsing of body on HTTP error.

The message of an exception is defined as a string.  This was JSON
parsing the body, and passing the hash to the exception which called
to_s on it.  The result wasn't particularly useful.

This now stores the parsed JSON data in an error_details attribute on
the exception, and puts the raw http_body in the message.
Fix delete_json to actually call do_json_request.

This makes it consistent with put_json, post_json, and is the expected
behaviour given the method name.
Add router API client
Change route delete to use query params
Merge pull request #85 from alphagov/router_api

Client for router API