Add File API.

Adds new API class for file testing and iteration. Currently it can test
whether certain files exist and what type of files they are, as well
iterate files in directories.

It currently lacks methods of actually reading from files, as well as
writing at them. We need to first implement some kind of stream API
before we add this functionality.

I also rewrote the `Filename` class to include more path manipulation
methods.