`have` predicate matchers fail when mapped to a private method
change type check for 1.8.7 support
rename method for accessible predicate for be and have predicates
rephrase message for be and have predicates when a private method is called
Merge pull request #531 from Adrian2112/master

`have` predicate matchers fail when mapped to a private method
Changelog for #531
[skip ci]
Refactor: one less method call per expectation expression.
Add `block_matcher?` 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)
Prefer polymorphism to conditionals.