Stop eating the error detail.

Some APIs return useful messages in 401 responses, etc, but
HttpResponseMessage.EnsureStatusCode() throws away the response, and
only includes the status code in the message of the exception it throws.

This throws a custom ApiException with enough information in it to deal
with the error properly.
Added integration test which uses custom exception.

Had to modify the PostToRequestBin test too, but I'm not sure what the
point of that is since it will always fail. Maybe we should just remove
it?
Handle exceptions when reading error content.
Merge remote-tracking branch 'origin/pr/45'