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).