Implement Vagrant::Mirror::Sync::Changes

Vagrant::Mirror::Sync::Changes handles the logic for synchronising
additions, modifications and deletions between machines following
a notification from guard/listen on either side of the pair.
Begin implementation of Vagrant::Mirror::Sync::All

Sync::All checks the existence and mod time of all files and dirs
on either side of the mirror so that both the guest and the host
have the most recent version of all files. Where it can, it uses
native SFTP recursive transfer to send new directories, otherwise
it manually compares the contents and transfers anything new or
modified.