Don't create Artifact if there were errors

Prevents nil-dereference crash when errors occur
Revert "Add a pause to ensure SSH has a chance to start. This is a tempoary workaround for the fact that the SSH tunnel code will cause packer to halt if the destination does not exist."

This reverts commit fd35d7c9846566f39143972e846c39daac363a05.
Add generic interruptible wait method
Add install_timeout to stop build if step_wait takes too long

Halts the build when the VM does not shutdown within the timeout period
Implemented with interruptible_wait, so step_wait is also interruptible
fmt step_wait, interruptible_wait
Replace all Fatal calls with Error calls
Add error handling to step_wait
Add more error handling
Don't close session twice
interruptible_wait: evaluate Predicate immediately

Previous behaviour was to wait PredicateInterval before the first
time that the Predicate is evaluated
interruptible_wait: allow nil Predicate

Allow for the case where InterruptibleWait is used purely for the
timeout.
See the documentation string for details.
Make boot_wait interruptible
Make HIMN IP finding and ping interruptible
Clean up VM instance and root VDI
Close SSH connections once we're done with them

Fixes "Waiting for SSH" hang at end of install
Update README to link to centos example directly
Fix typo
example config: explicitly state units in install_timeout
Merge pull request #6 from chengsun/master

Fixing up a lot of the ignored error handling.