Fix push lookups

@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.

This also fixes a couple other errors that were causing the build to fail.
@mitchellh they are different though :frowning:. The `with_tmp_env` function requires you wrap the test with a block. Given this needs to happen for every test, it didn't seem like the best option. The value in using stubs is that it can be used in a `before/after` block and RSpec can chain appropriately.