Implement filesystem services, and the required kernel objects.

I think it would make a lot of sense to return an `std::unique_ptr<File>` here instead.