Fixes release cleanup for `before_deploy` hook failures.

Combine `copy_repository_cache` and `with_failed_release_cleanup` to
prevent code from being inserted between the two methods that prevents
cleanup of the release directory.

Previously, hook failures would not trigger the cleanup of the release
directory because the code occurred between the two methods above.

The two methods need to be executed one after another, so the new method
`new_release` will enforce the contract without altering the behavior of
the deployment for applications.