[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()`.

`path_fix_case()` does not have any uses, so I haven't been able to test it, but I wanted it out of `os_unix.c` because we may want to enable using it for when mounting case-insensitive file systems.

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).
PROTO is meaningless to us, but we still have a bunch of `defined(PROTO)` conditions floating around (we should remove them).