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.
Allow `chain` blocks to accept blocks.
Use `respond_to_missing?` on 1.9+.
Improve docs.