Convert all errors during sync or monitor to Vagrant errors

Vagrant will clean up (destroy) a vagrant box if it traps errors that do
not inherit from VagrantError - trap any exceptions during file transfer
or connections and convert them to VagrantError descendents to avoid this.
Recover from errors during file transfer and synchronisation

On encountering files that cannot be opened, or that otherwise fail
to be copied, handle the exceptions generated by Net::SFTP and log
the failed transfer rather than aborting.