add some more .gitignore items for Visual Studio and Cygwin
to consider a file "overwritable" we now require that it is both openable for reading AND we can actually read a byte from it - this fixes a problem when specifying "nul" as an output file on Windows where we would both query the user for overwriting (which makes no sense) and then hang trying to find a suitable temp file name (which is worse)
fix redefined macro warnings from Cygwin (and maybe others)