Fix `==` and `===` on aliased matchers.

We had undefined them to support aliases of the `be`
matchers, but this makes `==` behave wrongly.
Add `define_negated_matcher`

This replaces #547.
Fixes #527.
Fixes #493.
Merge pull request #618 from rspec/pr-547-fixed-up

Add `define_negated_matcher`