Use `ifn?` to check if form can be used as predicate.

Objects created with `fn`, as well as data structures that can be used
as a function (eg: sets, maps) implement IFn. Using `ifn?` instead of
`fn?` allows us to use sets and maps as predicates.