Fold both sides of the builtin substring trio (contains /
startsWith / endsWith) via toLowerCase() at evaluation time.
Off by default - the trio is case-SENSITIVE unless enabled. eq /
neq keep Object.is identity semantics regardless; custom operator
definitions receive the flag through their evaluation context and
decide themselves.