The `SetAllEnv` function is one of two functions that allow for mutable
behavior within the `*config.Configuration` type. It is desirable for us to
remove that function, and all of its uses throughout the LFS codebase.
Unfortunately, a lot of `SetAllEnv` uses are coupled to initializing the
`config.Configuration` instance with custom `.gitconfig` data, a-la
`NewFromValues`. This coupling makes it difficult to write an atomic commit
that *only* removes the usage of `SetAllEnv`.
As a compromise, the signature of `NewFromValues` changed from:
```
func NewFromValues(gitconfig map[string]strimg) *Configuration
```
to...
```
type Values struct {
Git, Env map[string]string
}
func NewFrom(v Values) *Configuration
```
To support reading fixed data as a part of the `Env` fetcher, a new Fetcher
type was introduced:
```
type mapFetcher map[string]string
func (m mapFetcher) Get(key string) (val string) { ... }
```
and is used in place of the old `*EnvFetcher` to retrieve data from the
"environment".
appendRootCAsForHostFromGitconfig() modified to check hosts with and without a trailing slash.
Cert unit tests made "table driven" and extended to cover this case.