Add support for an extensible textual representation of predicates.

This support allows for arbitrary predicate configurations to be configured
via a string. This allows for certain handlers to only be applied based on
arbitrarily complex expressions.