Continue to Improve File Monitoring on Windows

This updates the file monitoring on Windows by:
-Clean up the code, and ensure things are indeed being freed when we exit.
-Have attributes changes in files (when monitoring directories) properly
 done.
-Split up the code, to ease readability

To Possibly Do:
-Check on whether we want to monitor the case when we try to pull out a USB
 stick without ejecting in in Windows (the monitoring mechanism
 understandbly denies such ejection requests, since the monitored
 file/directory is obviously in use in this case)
-Investigate on the interesting/boredom algorithm, whether we can do it
 here.

Possible Limitations:
-If moving a file out of the directory (or vice versa), the system reports
 that as a delete event (or create event in the vice versa case), so in the
 current form without using NTFS hournals (which is not optimal as that
 would trigger UAC), so we can't reliably emit MOVE OUT or MOVE IN events
 on Windows.
-Hard links are supported transparently, but notifications are only sent
 by the system on changes when the monitored file/directory (or monitored
 hard link) is being changed, when the file is modified via the hard link
 or original file respectively in this case.

https://bugzilla.gnome.org/show_bug.cgi?id=730116
10 files changed