Fix caching bugs in DSL matchers.

Previously, `@messages` was not cleared when new instances
were created, so the `description`, `failure_message_for_should`
and `failure_message_for_should_not` blocks would take on the
value set by the most recently built instance.

In a case like:

RSpec::Matchers.define(:be_like_a) do |expected|
  description { "be like a #{expected}" }
end

be_like_a_moose = be_like_a("moose")
be_like_a_horse = be_like_a("horse")

...each matcher instance eval'd the `define` block once.
Since the object that holds a reference to the description
block (the `@messages` instance variable) was not cleared
between the two examples, the description block for both
instances would have `expected` bound to "horse" (since
it was instantiated last, and its define block eval'd last).

This caused the description and failure messages to return
the wrong values in situations like these.