Whitelist RaiseError for rubocop class length.

...rather than having such a large global setting.
Fix arity check for yield matchers.
Fix warnings produced by output matcher.
Expand shared examples so that it shows chaining both ways.

- matcher.and other
- other.and matcher
- matcher.or other
- other.or matcher

This is in prep for supporting compound block expectations (#552).
In that case, the ordering of the matchers can matter.

However, adding these additional specs triggered a very odd
bug on 1.9.2/1.9.3 where `String#match` returned a boolean
value rather than a match data object as expected. Switching
to `Regexp#match` seems to have fixed it.
Support compound block expectations.

For #552.
Refactor block matching logic in compound matchers.
Rename new matcher protocol method.

`block_can_be_wrapped_for_compound_expectations?` was a
confusing name, especially given that the wrapping is
an implementation detail of the compound matchers and
not something that users are expected to know about.

`expects_call_stack_jump?` is a better name.
Document the matcher protocol.

Including the new `expects_call_stack_jump?` method.
Changelog.

[ci skip]
Address doc/comment suggestions by @xshay.
All built-in matchers implement `expects_call_stack_jump?`.

Given the fact that our compound matcher logic calls this
(with `rescue NoMethodError`) rather than using a `respond_to?`
check, it’ll perform better to always define it.

This also changes several matcher to subclass `BaseMatcher`,
as that provides the default implementation of this new method.
It’s simpler than defining the method in the same way on all
these matchers.
Add diffing methods to matcher protocol.

I forgot these earlier.
Add rationale for why two matchers can't be combined.
We can’t assume `supports_block_expectations?` is defined.
Extract evaluator classes for the nested vs sequential case.

This shortens the definition of `Compound` (allowing
us to drop the rubocop ClassLength setting to 90) and
groups all the logic for the nested case into a
single class so it’s not mixed up with the rest of
the compound logic.
Merge pull request #567 from rspec/compound-block-expectations

Compound block expectations