Stub ATLAS_TOKEN in tests

Without this stub, the tests will fail if ATLAS_TOKEN is set locally 
when running the tests.
Pushes are hashed by name, not strategy.

@mitchellh this is a partial revert of 84ae22e. It took me a little bit
to figure out why this broke everything, but then I finally realized it.

84ae22e changes the finalize! function to lookup pushes by strategy
type, but pushes are keyed by push strategy name. In other words, given:

    config.push.define("foo", strategy: "bar")

the `push_configs` has will look like:


    { :foo => [:bar, #<PushConfig>] }

This is important, because if we key by strategy, the user cannot 
specify the same push strategy more than once:

    config.push.define("foo", strategy: "bar")
    config.push.define("zip", strategy: "bar")

If we keyed off of the strategy, this would be impossible.
Fix SafeExec tests
Merge pull request #4975 from mitchellh/sethvargo/fix_push

Fix push lookups
Add push fix to CHANGELOG
Force opts to be options

cb6f3e5 introduced a change to the method airty of machine actions to remove the
`extra_env` attribute.

- Fixes #4960