Modify is_number() to return False for booleans.
Add predicates:

- is_associative()
- is_even()
- is_float()
- is_indexed()
- is_instance_of()
- is_integer()
- is_json()
- is_negative()
- is_odd()
- is_positive()
- is_zero()