Clean up how we deal with subprocesses

- Make git rev-parse and cat-file -s use child_process.execFile instead
  of rolling our own implementation

- Use Stream.pipe to write to our HTTP response to prevent data from
  buffering inside the Node process when the HTTP reader is slow

- Stop git cat-file -p when the remote end hangs up
Be more RFC2616 pedantic about unknown methods

- We should be returning 405 Method Not Allowed instead of 400

- We should return 404 if the resource doesn't exist. This means moving
  the method check to after we've successfully queried the blob
Pass the config file name on the command line

This lets the treesrv installation be seperate from its config
Become a proper NPM package

- Reorganize the file structure to be less messy

- Add a git-tree-srv wrapper script that will require CoffeeScript and
  then server.coffee

- Fill out package.json
Finish the response once git's stdout is closed

If the 'git cat-file' exits on the same tick as it has writable data in
the socket we can finish the response before the remaining data arrives.
Instead finish the response in stdout is closed which seems cleaner
anyway.
Add some more friendly messages

- Print a message once we've started up

- Reference the example config file if we're invoked without one
Properly handle revisions with / in them

This is pretty embarassing as all full reference names have slashes in
them
Improve documentation

- Add a README.md

- Add more comments to config.coffee.example

- config.coffee.example => config.example.coffee
  This is purely so text editors and Github can syntax highlight it
  correctly