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.
packer/template: Test that builder.rawConfig excludes name

The name isn't actually part of the builder config, so it should be
removed during parsing.
packer/template: Remove name from builder rawConfig

This prevents the builder from rejecting the name (which it doesn't
know about) when validating the config.
Merge pull request #199 from qur/builder-name

packer: builder name should be removed from rawConfig
website: remove the ?direct in downloads to use CDN
website: powered by bintray
Update CHANGELOG
Merge pull request #195 from markpeek/markpeek-file-error

communicator/ssh: check scp codes and report errors
Update CHANGELOG
communicator/ssh: remove complete TODO
packer: fix failing tests
communicator/ssh: style

/cc @markpeek - The main thing is that the style for variables/methods
in Go is to use CamelCase (with the first letter generally downcased
unless an exported thing).
builder/common: extract out decode config
builder/*: extract to common the config decoding
builder/common: CheckUnusedConfig
packer: MultiErrorAppend helper method.
builder/*: switch to MultiErrorAppend
Remove ISO from ide1 in stepCleanVMX
packer/cache: Extract cache path calculation to method