Add some fancy-pants directory handling so that index.html works as expected.

This still needs some test coverage, but the general idea is that it allows `index.html` files to be served correctly via statik.

The built-in HTTP server redirects URLs ending in `.../index.html` to `.../`, which causes failures since directory entries don't exist in the map. This works around the problem by checking for matches with `/index.html` appended when the file lookup fails initially and implements a simple `IsDir()` to fake out the internal logic.