There are some servers that cannot speak HTTP/2 in all cases and demand
to fall back to HTTP/1.1 with a HTTP_1_1_REQUIRED. Notably, this
happens with IIS 10 when using NTLM. Go's HTTP library doesn't seem to
like this response and aborts the transfer, leading to a failure.
Fortunately, Git has an option (http.version) to control the protocol
used when speaking HTTP to a remote server. Implement this option to
allow users to set the protocol to use when speaking HTTP and work
around these broken servers.
Extract more basic http-related functionality out of lfsapi and
into a new package, lfshttp. Everything is currently functional
aside from authorization.