What's Changed
* 2 new lazy predicates: root_p and this_p
* is_range_p to check if a value is a range
* parser to convert string with named predicates to a predicate structure, for example "(p & q) | r"
* truthy and falsy predicates
* predicate to check string against a regex
* added is_list_of_p to check the contents of a list against a predicate
* added is_tuple_of_p to check the contents of a tuple against multiple predicates
* updated documentation
* cleanup