+ fix registerWithParent function
+ fix unRegisterWithParent and use it in Remove and RemoveAll
+ fix findParent function
+ add lock free versions of Mkdir and Open for the use during register and unregistering with parent, so that these changes happen atomical
It was attempting to delete a file with a hardcoded path of "name" as
opposed to the path in the `name` variable.
Fixing this exposed a deadlock because the function was attempting to
acquire an exclusive lock when it already had a read lock.
When fs.MkdirAll() was called with a permission of "777" (without the 0 prefix),
it generated the testDir with a permission of `dr----x--x`, causing the following error
during a test run:
=== RUN TestRead0
--- FAIL: TestRead0 (0.00 seconds)
fs_test.go:53: OsFs create failed: open /tmp/fun/test.txt: permission denied
Changing the decimal `777` to octal `0777` fixes the problem.