def setup(premium=false, &definition)
      setup = Setup.new(&definition)
      premium ? @setups.unshift(setup) : @setups.push(setup)
      setup
    end
Add a setup block.

A setup block defines the topic of the context. There can be multiple setup
blocks; each can access the previous topic through the +topic+ attribute.

context "A string" do
setup { "foo" }
setup { topic * 2 }
asserts(:length).equals(6)
end

If you provide +true+ as the first argument, the setup will be unshifted onto the list of setups,
ensuring it will be run before any other setups. This is really only useful for context middlewares.

@param [Boolean] premium indicates importance of the setup
@return [Riot::Setup]