BasePathFile.Name trimmed only filepath.Clean(path) from the wrapped
file name. filepath.Clean drops the trailing separator, and a nested
BasePathFile reports a name whose base segment is preceded by a leading
separator (for example "/123/x"), which the cleaned base ("123") does
not match. The base then leaked into Name and callers double-prepended
it. Trim the separator-prefixed form too so nested BasePathFs report a
name that round-trips.
Fixes#428
Per POSIX, O_EXCL is meaningful only together with O_CREATE. MemMapFs
OpenFile returned ErrFileExists whenever O_EXCL was set on an existing
file, so reopening a file with O_RDWR|O_EXCL failed even though no
creation was requested. Guard the existence check with O_CREATE so that
O_EXCL without O_CREATE opens the existing file, matching os.OpenFile.
Fixes#415