Rename FilesystemOps to pluralize it correctly.
Put the FilesystemOps classes in the namespace.
Use "override" for the FilesystemOps child classes.

Also a few other minor cleanups.
Make the FilesystemOps interface take std::string.

This makes it certain we don't get a stray null.
Fix the style of the filesystem_ops.h header guard.
Implement FailingFilesystemOps in terms of the real one.