def setup(premium=false, &definition)
      setup = Setup.new(&definition)
      premium ? @setups.unshift(setup) : @setups.push(setup)
      setup
    end
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]