Implemented os_utime

To replace the code in fileio.c.
Fun fact: libuv does not use utimes yet (if available)
Personally, I would prefer the following prototype:

```c
/// ...
/// @param path ...
/// @param atime the desired access time in nanoseconds since the UNIX epoch
/// @param mtime the desired modification time in nanoseconds since the UNIX epoch
/// @return either 0 for success, or a negative value representing the error (errno code)
int os_utime(const char *path, uint64_t atime, uint64_t mtime) FUNC_ATTR_NONNULL_ALL
{
  // ...
}
```