Return errors from remote scp command

Currently file provisioners will silently fail when there is an error
with the remote side. This commit checks the scp error code and will
return the error message from the remote.
Log an upload error closer to when it occurs

When there is an error returned from the Upload it is propagated back
to the main loop and may have additional log messages before the actual
error is displayed. This displays a log message close to where the error
actually occurred.
Merge pull request #195 from markpeek/markpeek-file-error

communicator/ssh: check scp codes and report errors