Correctly initialize this.details.

The constructors should really be fixed to use Java's getCause()
rather than the "cause" key.
Detect incorrect HTTP status codes

.. rather than failing on parsing the HTML in the
error message! :)
Using Apache HTTP Components HTTP Client library

.. which can follow HTTPS -> HTTP redirects
and fallback to Java's URLConnection

TODO: Accept headers only matter for HTTP - modify test
Include Accept header in HTTP client call
Only test that custom protocol was used

.. separate test needed for accept headers
Add javadoc and fix deprecations to fix issue #60
Unignore tests to verify that they still work in future.

If they start to fail they can be ignored again.

Also add assertions to verify that the maps that are returned are not
empty
Merge remote-tracking branch 'upstream/master'