Add support for using alternative HTTP backends via Faraday

This supersedes #259.