Update interceptors to use request.originator

Some interceptors need to make subsequent http requests. These
interceptors are often configured with an explicit client to use for
these subsequent requests, or default to their own interceptor chain.
With the introduction of the request.originator property, it's now
possible to make these subsequent requests using the same interceptor
chain as the original request. This makes interceptors installed lower in
the chain accessible for subsequent request.

The hateoas and location interceptors now default to the
request.originator client, when available. Explicitly configured clients
still take preference, and the interceptors own chain will be used if
request.originator is unavailable.