Ensure predicates are applied during matching

(Re-opening #856 against neo4j/master)

Currently null checks are done separately, which is inconsistent.
Normalizing this behaviour for 2.0