Add an OverlayFileSystem class

Provides a way to merge multiple vfs::FileSystem objects into a single
filesystem.