Use a Session to enable connection pooling

Requests and urllib3 automatically reuse connections if using a Session, which otherwise has all the same methods as the main Requests API, making this a drop-in replacement: http://docs.python-requests.org/en/latest/user/advanced/

In my tests, this change cut 830 HEAD requests to Foursquare's internal artifact cache from 22s to 11s.
remove unused payloads from cache keys

makes them pickle-friendly
remove log from caches

doesn't pickle
Move requests-logging setting to global scope

This should happen on import since the __ini__ may
have happened in a different proc and been pickled
Add test for CombinedArtifactCache's behavior

Makes sure that remote + local correctly "backfills"
local when fetching from remote.
RESTful cache wraps Local cache

Replaces the CombinedCache approach to composing a remote and local
cache with a remote cache that simply wraps a local one, delegating
to it to store and create tarfiles.

Combined cache can "backfill" caches with artifacts found in other
caches but as it allows composing arbitrary cache implementations,
it must do so via generic insertion calls. In the common case of
remote and local cache, this means downloading a compressed tarball,
extracting it, then recompressing the contents into an identical
tarball, adding almost 20-25% to total cache fetch time.

This removes all the tar file operations from remote cache in favor
of delegating to the embedded local cache, so when a local cache is not
provided to the RESTfulCache constructor, one that provides the same semantics
via tempfiles is used instead.
multiproc map cache checks

we need to start the multiproc pool early so that
anything that the workers are forked before anything
might start using zlib, due to static zlib lock in 2.7.