Prefer curlies to do-end for `expect { }.to raise_error`.

`do` and `end`, as English words, read funny in the middle
of the expectation expression.
Refactor matcher_spec.

- Use a helper method to create the matchers, rather than
  `Matcher.new` + `for_expected`. I plan to rewrite the
  implementation of `Matcher` in a way that will require it
  to be instantiated differently and I having this helper
  method gives us only one place to update.
- Prefer `let` to `before(:each)` ivars.
- Define the module inline as a local; this avoids the need
  for the awkward `m = mod`.
Address a few under specifications of custom matchers.

This will help with my upcoming refactoring.
Use `include` instead of `extend`.

In RSpec 3 the body of `define` will be a
class definition and the body of `match` (etc)
will be a method def, so using `extend` to make
a method available to the `match` block will
not work.
Add pending specs for things that should work after matcher refactoring.
Refactor custom matcher DSL.
Ensure helper methods can be accessed from the macro blocks.
Use singleton classes rather than dup'ing the matcher class.
Assign the matcher subclass to a human readable const.

This helps provides useful `#inspect` output.
Compile the user's block directly to a method.

- This makes the "this macro method defines a
  method" abstraction less leaky.
- It allows constructs like an early `return`
  to be used from within the block.
- It puts all user refs into a common module.