Load JSON-LD contexts from URL using input stream method of JSONFactory

Avoids problems with content type which breaks URL.getContent() - 
instead we make a URLConnection with the appropriate Accept headers. 

Note that this assumes UTF-8 encoding which is required by JSON
specification of application/json (and thus for application/ld+json)
Tidy..
Test request property using fake URLStreamHandler
Swapped order so application/ld+json is first
After advice from #swig - do a single Accept header instead.
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