Share the transport between locations using the same upstream

This is an important commit that fixes connection overload problem in case of hundreds of locations.
Currently each location uses it's own transport to the backend. This commit changes this behavior to reuse the same transport
from the upstream. This change also moves transport-level settings like timeouts to the upstream.

@bradgignac  @jeremyschlatter please review folks
Does JSON parsing really belong in the backend directory anymore? It seems like JSON usage is strictly related to handling of API requests.