Make it easier to create custom HttpExchangeAdapter

It can be useful to be able to customize response handling in RestClientAdapter or WebClientAdapter, e.g. for custom response handling via .exchange((request, response) -> {...}) instead of the .retrieve() workflow. Currently both adapters are final. Rather than making them open of extension, we can provide access to new request, and that would make it easy to use the built-in adapters as a delegate.