Failing native test
Add test for non-existent read-write base directory

Also ensure syscall_linux.New() returns the correct type.
Integration testing

Rename Syscall_FS.

Improve error stacks. Inline undo functions in order to position the
gerror constructor calls closer to the source of the corresponding
errors.

Ensure SyscallFS is constructed with root privileges.
Rebind bind mount read-only

See https://lwn.net/Articles/281157/
Verify read-only bind mount

Make the remount conditional upon the first attempt to create a read-only bind
mount actually producing a read-write bind mount. Then after issuing the
remount, verify the result. All through, issue appropriate diagnostics.
Ensure prototype rootfs has subdirs for testing.
Add test for missing subdir(s).
Check dirs exist in rootfs.Generate.
Create necessary subdirectories of prototype in unit tests

Wrap file existence in fileutils, test fileutils, use in runtime code, and mock in other tests.

Add CreatePrototype to test_support package.
Remove dead code
Add Remove method to RootFS

Call Remove from the integration test and also check that the directory that the root fs was using can be deleted.

Add a syscall integration test.

Note that Generate may have a minor side-effect on error.

Use %s instead of %q for printing gerrors to improve formatting.

Use a more reasonable default filemode for created directories
Trim the stack slice appropriately in all cases
Ensure an open file handle is closed
Improve test directory cleanup