Package/test tarballs in a temporary location
Package/test tarballs in a temporary location

Right now a `Bomb` struct is used to attempt to ensure that broken tarballs
don't escape, but this unfortunately doesn't work for when Cargo is terminated
via other means such as ctrl-c or abnormal termination. Instead the tarball is
constructed in a temporary location and then only moved to the final location
once all checks pass.

Closes #2173
cc #2177

tsurai/cargo,gchp/cargo,akiss77/cargo,rust-lang/cargo,sbeckeriv/cargo,ThinTim/cargo,gchp/cargo,rustyhorde/cargo,tsurai/cargo,cmr/cargo,mark-buer/cargo,sbeckeriv/cargo,rustyhorde/cargo,mark-buer/cargo,eminence/cargo,blaenk/cargo,sbeckeriv/cargo,blaenk/cargo,tsurai/cargo,rustyhorde/cargo,durka/cargo,achanda/cargo,blaenk/cargo,akiss77/cargo,tshepang/cargo,cmr/cargo,akiss77/cargo,nipunn1313/cargo,gchp/cargo,cmr/cargo,tsurai/cargo,tshepang/cargo,rust-lang/cargo,vojtechkral/cargo,ThinTim/cargo,brson/cargo,eminence/cargo,AndiDog/cargo,blaenk/cargo,cmr/cargo,rustyhorde/cargo,brson/cargo,achanda/cargo,ThinTim/cargo,tshepang/cargo,akiss77/cargo,eminence/cargo,nipunn1313/cargo,akiss77/cargo,tshepang/cargo,rust-lang/cargo,vojtechkral/cargo,sbeckeriv/cargo,nipunn1313/cargo,blaenk/cargo,mark-buer/cargo,ThinTim/cargo,AndiDog/cargo,cmr/cargo,AndiDog/cargo,gchp/cargo,vojtechkral/cargo,mark-buer/cargo,durka/cargo,eminence/cargo,AndiDog/cargo,gchp/cargo,nipunn1313/cargo,durka/cargo,mark-buer/cargo,rust-lang/cargo,achanda/cargo,achanda/cargo,brson/cargo,vojtechkral/cargo,tsurai/cargo,durka/cargo,brson/cargo,AndiDog/cargo,brson/cargo,ThinTim/cargo