Merge pull request #46 from hannobraun/bug/abstract-erase

(fix) Error::abstract was renamed to erase
(fix) Return 404 response, if file was not found

I'm not too happy about this implementation, but I don't really know how
to improve it. I've added comments explaining my misgivings.
Improve error handling code

This fixes one of the warts from the last commit that I was unhappy
about.
(cleanup) Simplify the code that return 404 response
Move static file handler into dedicated module

I'm about to add another handler for 304 caching and I think having them
all in the same file will become inconvenient.
Move path building code into new util module

The same logic will be required by the cache handler.
Move error types into util module

There they can be used by the caching handler I'm about to add.
Add StaticWithCache handler

This handler wraps Static and adds 304 caching. It currently won't
handle requests for directories correctly.
Move index serving logic into util

Moved the logic that decides whether index.html should be served into
util. It is going to be used by StaticWithCache later, so it needs to be
in a commonly accessible location.
Move directory redirect logic into util
Move index path creation into util