Proxy: Cache responses to link accesses

When an attribute corresponding to a link is accessed, cache the
response so we don't have to send a new request each time. Both positive
(HTTP 200) and negative (HTTP 404) reponses are cached.

To accomplish this, we change _link_map to store LinkInfo objects,
instead of just the URLs. A LinkInfo object is essentially a cache
entry, and records whether or not we have made a request for the
resource, and if so, the data (if it exists). In the future this will
also store timeout information necessary to trigger refreshes.

The tests for this feature rely on httpretty's ability to store the
number of requests that have been made; they check that on the second
access to a link, the number of requests does not increase.