Fix some flakies on the first spec
Fix some flakies on the first spec

Sometimes, the initial environment before the first spec would not be
properly reset, causing some specs to fail if they run first.

Reproducible with

```
bin/rspec \
  --seed 52285 \
  -e "Bundler.unbundled_env behaves like an unbundling helper should clean up RUBYLIB"
```

This change causes a separate spec failure, namely:

```
$ bin/rspec spec/bundler/gem_helper_spec.rb:294

1) Bundler::GemHelper gem management release:rubygem_push success messaging No allowed_push_host set RUBYGEMS_HOST env var is set should report successful push to the host from the environment
   Failure/Error: expect(Bundler.ui).to receive(:confirm).with(message)

      #<Bundler::UI::Shell:0x0000556bc98a8f60 @shell=#<Bundler::Thor::Shell::Color:0x0000556bc98e80e8 @base=nil, @mute=false, @padding=0, @always_force=false>, @level="info", @warning_history=[]> received :confirm with unexpected arguments
       expected: ("Pushed lorem__ipsum 0.1.0 to https://custom.env.gemhost.com")
            got: ("Pushed lorem__ipsum 0.1.0 to rubygems.org")
   # ./spec/bundler/gem_helper_spec.rb:54:in `mock_confirm_message'
   # ./spec/bundler/gem_helper_spec.rb:286:in `block (6 levels) in <top (required)>'
   # ./spec/spec_helper.rb:100:in `block (2 levels) in <top (required)>'

```

This is due to some RSpec weirdness. In particular,
https://github.com/rspec/rspec-core/issues/2544.

If you have an outer `before(:each)` block, and an inner `around(:each)`
block, it turns out that the inner `around(:each)` runs before the outer
`before(:each)`. This is very unintuitive and might change in future
RSpec's. In our case, it causes a particular failure where the `around`
hook would set a value for an environment variable, and then it would
be unintentionally reset by our global `before` hook.

We workaround the issue by changing the global `before` hook to an
`around` hook, so that the ordering respects nesting.

bundler/bundler,mvz/bundler,bundler/bundler,mvz/bundler