Evaluate predicate functions against WAI requests and receive
metadata in addition to a success/failure indicator.

Predicates can be combined using logical connectives and the
metadata are passed on accordingly.
