Refactor: one less method call per expectation expression.
Add `supports_block_expectations?` to matcher protocol.

This is used to give users a clear error when they
wrongly use a value matcher against a block, expecting
it to match against the return value of the block:

expect { 3 }.to eq(3)
Add shared example enforcing usage in a composed matcher expression.
Fail gracefully when a block matcher is not given a block.

Fixes #526.
Test negation in the shared examples as well.
Merge pull request #530 from rspec/block-matcher-clarification

Give users an error when they use a value matcher in a block expectation expression