Refactor the HTTP client logic to make it much easier to add support for
"file:" and "https:" URLs on push, pull, sync, and clone.