Watchdog (on Windows) would create bad FS changed events streams

Code was stripping duplicate events from its internal queue. Example:
       Create X, Delete X, Create X, Edit X
Would be filtered to
       Create X, Delete X, Edit X
because the second "Create X" was still in the queue... thus it was
dropped. But that isn't a valid event stream. Can't 'Edit' a file that
doesn't exist.

Fixed by changing to use a queue that only dropped duplicate consecutive
events.
Fix DirectorySnapshot to handle 2 different cases
1) file X and Y exist.
       move X Y
   was not reporting proper results. Was only reporting
   that Y was deleted.
2) file dir1/X and dir2/X exist.
        move dir1/X dir2/X
   similar issue. Old code reported 'dir1/X' was deleted. And
   nothing about dir2/X

Proper event is that the file was 'Moved'

Original patch from Peter Potrebic <potrebic@gmail.com> that was further
improved by Hannu Valtonen <hannu.valtonen@ohmu.fi>
Merge pull request #165 from Ormod/ordered

Fixed and polished version of PR https://github.com/gorakhargosh/watchdog/pull/133