Adds mapping of predicates

This pull request adds the functions `map`, `any` and `every` that allow to use a map of predicates on an object and do a conjunction or disjunction of the results. It is similar to duck typing but gives more flexibility.