Configurable request library

As contributed by @romanbsd in #26 , with some changes to 1) move Faraday support out of the core library, while allowing a clear and simple path for integration, and 2) move overriding to use Consumer classes rather than a new class.