Add define_negated_matcher

This is PR is a result of the discussion and work done on: https://github.com/rspec/rspec-expectations/pull/505#issuecomment-40676532

TODOs:
- [ ] add cuke
- [ ] cleanup negation_spec
- [ ] add proper docs
- [ ] general cleanup

@myronmarston @JonRowe /cc
I don't think we're adding `description_when_negated` to the protocol anymore, instead using `define_negated_matcher` to provide the description.