Rewrite custom matcher DSL.

Rather than evaling the `define` block in the
context of the matcher instance, eval the `define`
block in the context of the matcher instance's
singleton class.

* Fixes https://github.com/rspec/rspec-expectations/pull/272.
  `include` in `define` has a different meaning (module inclusion)
  than `include` in the `match` block (using the `include` matcher to
  match).
* Better solution than https://github.com/rspec/rspec-expectations/pull/194
  for https://github.com/rspec/rspec-expectations/issues/188. There's now
  a `match` class method and a `match` instance method.
* Completely avoids issues we had to use hacks to solve before:
  https://github.com/rspec/rspec-expectations/pull/29,
  https://github.com/rspec/rspec-expectations/pull/38,
  https://github.com/rspec/rspec-expectations/commit/fc4b66dc16b0394ca9d6f63a93296b035052c485
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.
Make matcher constant assignment more robust.

JRuby and Rubinius apparently don't handle
non-ascii in const names.
`for_expected` doesn't really serve a purpose here.