Add FileSystemProvider implementation

Should be complete, all that is left is to test.