Fix two bugs in UnixRuntime and change Pipe class to be public

- sys_access needs to normalize paths just like everyone else
- DevFS wasn't parsing file descriptors right in open()
- Pipe is useful for moving data between Java and C
make Runtime._syscall() protected so it can be overridden from outside the package
Add the ability to swap out stdio of a UnixRuntime
Add better support for Windows paths and file error handling
Fix a bug in InputOutputStreamFD

If the backing Java InputStream reads zero bytes, InputOutputStreamFD
will incorrectly report EOF.  Force a second read that conclusively
determines EOF.