Return cached version on transport error.

Modified CachingRequest to return a cached response in case of a transport
error.
Single-level of cache folders

Use a shasum to make sure that they don't collide, and sanitize/shorten
the full url so that it is human-intelligible.

This avoids having to use a `#` character in the filenames.
GET requests can send a request body

For example, this is how you send query parameters to
elasticsearch.
Treat GET and HEAD similarly
Save rawHeaders as well, if available

New feature in Node v0.12
test: Return HEAD response from cache