Instance evaluate blocks for new environments

Using instance evaluation for new environment contexts gives us a more
compact DSL that's more congruent with how Cucumber evaluates its own
step definitions. It also allows the user to receive the overridden
configuration values as block arguments.

It changes the following usage:

  When(/.../) do
    on_wiki(:b) do |env|
      as_user(:a) do |env|
        env.visit(LoginPage).login_with(env[:mediawiki_user], ...)
      end
    end
  end

To a more natural and succinct:

  When(/.../) do
    on_wiki(:b) do
      as_user(:a) do |user, pass|
        visit(LoginPage).login_with(user, pass)
      end
    end
  end

Change-Id: Id691e3a77c72445cfa9d3f4a2cbc270589703c6e