Change matcher protocol

This is a first pass for #270.  I'm pretty happy with it so far but there's still `RSpec::Matcher.last_should` to update.  if this get s LGTM from another rspec core member I'll go ahead and merge w/o that; otherwise I'll add that to this PR.