Introduce the `Negative` Interface

Allows for matchers to be aware of the fact that they may be wrapped up
in a `LogicalNot`. If `LogicalNot` sees that it's wrapped matcher
implements `Negative` it will call `negativeMessage` instead of doing
it's normal "replace is with is not" routine.

See #1
Have Callback implement Negative
Introduce and test Assert::assertCallback
A bit more liberal use of the Negative interface
Make sure Negative implementions actually work
Merge pull request #2 from chrisguitarguy/neg_matching

Better Negative Matching Messages