Network, cache and user response types.

Change the internals to handle user, network and cache requests and
responses. Expose the network and cache responses in the API, so that
clients can see which responses were cached, network, and conditionally
cached.

This is intended to replace ResponseSource.
Merge pull request #836 from square/jwilson_0518_responsetypes

Network, cache and user response types.