[RFC] os_open/read/closedir()

Moves `unix_expandpath()` and `fname_case()` out of `os_unix.c`. Since they no longer require unix, I renamed them `path_expand()` and `path_fix_case()`.

This PR would benefit from upgrading libuv as it learns `uv_fs_readdir_next()` in `v0.11.29` (we use `28`) it changes the interface to `uv_fs_readdir()` and breaks the code as I have it written. In other words, either we upgrade now and hope they don't break anything again, update this code when we do upgrade, or not integrate this PR until `uv_fs_readdir()` has stabilized (which it may or may not already have).
Not sure we need this anymore. Why would anyone compile with `NO_EXPANDPATH`? In `os_unix_defs.h`, we have
```c
#ifndef HAVE_OPENDIR
# define NO_EXPANDPATH
#endif
```
Not sure when we wouldn't have `opendir()`, or if this even matters, compiling with libuv.