RFC: Add matcher protocol and a couple of example uses

Would you be interested in adding the shared_example defined below so that developers can easily test whether their matchers at least implement the protocol. I've only added the behavior to a few specs but if folks think this is a good idea, I'll go ahead and add them to all the existing specs before finalizing this PR.

The back story is that I spent a while debugging a matcher that did not implement the `description` method. The observed behavior in that case is that any `should` expressions somehow turn into `should_eventually` expressions and get deferred.