win32: use ReplaceFile() instead of rename()

The Windows implementation of rename() fails if the new filename
already exists. When processing the input file in place, unifdef
uses ReplaceFile() instead.
travis-ci: import travis yaml controller

.travis.yml is used for automatic builds on travis build farm
(https://travis-ci.org/) if the travis service hook is enabled for the
repo on github.

This inital yaml controller will run 3 different compilers (gcc, clang,
mingw). Mingw builds will use wine for running the test suite, which
currently fails for some tests to be fixed (or skipped) later.

Builds are enabled for two branches "master" and "tmp" where the tmp
branch may be used to try something out whithout polluting the master
history (specially when changing/testing .travis.yml itself).
win32: ReplaceFile() is not the right thing either.

Sometimes unifdef calls replace() when the target filename does not
exist, in which situation ReplaceFile() fails. So it is easier to
call remove() and rename() and not worry about atomic replacement.
unifdef: add a comment to explain the newline handling
unifdef: close input when processing is complete

This avoids leaking input file handles when processing multiple
files, and it should help with the temporary file handling
problems on Windows.
unifdef: slightly cleaner backup filename handling
win32: report intermediate errors in replace()