vfs: sync/invalidate for memory mapped objects

Sync writes back changed (shared) pages, invalidate wipes changes from CoW pages and restores the original file's content.
posix: implemented msync() properly now
vfs: File::sync() function, used to sync a single block back to disk (where supported)