Return errors from size instead of raising Fs_error

Without this, if the path doesn't exist then clients just get e.g.

  Fatal error: exception Fs.Make(B)(M).Fs_error(_)