Implement the IN operator for predicates

@alazier 
This is not new to this PR, but still: We should avoid "default" in switch statements when we switch on an enum. Instead list the types that should give this exception. This way the compiler will provide a warning when a new type is added that isn't handled by any "case".