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.