Make be_predicate fail upon calling a private method

A potential solution to #206, this makes `be_predicate` fail with a nice warning when calling a private methods.

Potentially this might want to be configurable, so as not to break existing test suites? Is this a decision we want to make for the person writing the test suite? Is #206 the desired behaviour or do we want to let users make the decision about calling private methods...