def initialize(description, negative=false, &definition)
      super(description, &definition)
      @negative = negative
      @expectings, @expectation_block = [], nil
      @macro = AssertionMacro.default
    end
Setups a new Assertion. By default, the assertion will be a "positive" one, which means +evaluate+ will
be call on the associated assertion macro. If +negative+ is true, +devaluate+ will be called instead.
Not providing a definition block is just kind of silly since it's used to generate the +actual+ value
for evaluation by a macro.

@param [String] definition A small description of what this assertion is testing
@param [Boolean] negative Determines whether this is a positive or negative assertion
@param [lambda] definition The block that will return the +actual+ value when eval'ed