Error Handling

Add hook to allow clients to customize RetrofitError exceptions.

Instead of having to catch RetrofitError for things like invalid requests (say, in the case of an invalid business object), a client can provide an ErrorHandler, which can customize the retrofit error, throwing a custom error exception on a case-by-case basis.

The ErrorHandler must also handle the async case, where it can call a custom callback method based on the original RetrofitError.