vfs:  Add file_memory_mapping
Genie:  Keep filehandles open in memory mappings

Memory mappings created by mmap() must act as an additional reference to
an open filehandle.  The file_memory_mapping aggregates a filehandle_ptr
and another memory_mapping_ptr that actually holds the memory (which can
either be from NewHandle() or malloc()).

This could theoretically already be an issue for a program that observes
in some way whether a file is still open.  The subsequent implementation
of msync() definitely requires it.