fix bad pipe for no-gzip accepted

This should fix #46, which is caused by the client not accepting gzipped files but gzipping not explicitly being turned off in the options so there was a bad `pipe` chain which caused data to get to the request but because the falsely created gzip stream isn't piped anywhere it stalls on `highWaterMark`.

Also took the opportunity to clean up the initial file cache code.

Reviews would be appreciated before merging this!
Cache bug, previous version appended the `fd` to the start of the key but the cache lookup didn't do the same. This was probably something that should have been fixed around the introduction of [fd](https://github.com/rvagg/fd) for managing the file descriptors.

We now have a test case that confirms the use of the cache too.