predicates: Refactor

This patch:

- Replaces FluentPredicate with it's implementation class;
- Makes MethodMatcherFactoryImpl use assignCompatible from its new home;
- Updates unit tests to take account of this.