fixes #4929

Fixes #4929. Touch implementation based on on libuv's uv_fs_futime function.
should this have a try/catch to ensure `f` got closed?

should probably throw an error if `FS.open` failed