Filesystem.v3: Change from throws object to throws() function as error_code tag. Fix several error handling bugs detected in testing this change.