Java exception hierarchy for API errors

* Introduce package com.dnanexus.exceptions with all the API error subtypes. All API errors throw DXAPIException or (when possible) one of its subclasses (e.g. InvalidInputException). Also introduce DXHTTPException which captures HTTP errors like the connection being dropped, or the response being unparseable. DXHTTPException is only thrown if a request and all 5 retries fail, and the error that is thrown reflects the last attempt.
* DXHTTPRequest.request is changed to only throw unchecked exceptions. DXHTTPException and DXAPIException are both subclasses of RuntimeException (therefore unchecked).
* Example apps and tests are updated to remove now-unneeded "throws" classes.

@kislyuk @kjlai