Reboot tolerance

This PR adds retry functionality to the upload function. This permits reboots to occur, while allowing subsequent provisioners to sit and wait for the reboot to complete before continuing. E.g.:

```
  config.vm.provision :shell, :inline => "Write-Host \"Hello, World!\""
  config.vm.provision :shell, :inline => "Restart-Computer -Force"
  config.vm.provision :shell, :inline => "Write-Host \"Hello, World!\""
```