Rationale:
a in b == x in y // membership in two things is the same
a in b != x in y // membership in two things is different
a in b <= x in y // a has at most as much membership in b as x has in y
a in b < x in y // a has less membership in b than x does in y
This matches Kotlin precedence for this operator https://kotlinlang.org/docs/reference/grammar.html#expressions
* Update grammar
- add '=' to grammar so that we can report appropriate errors
- add elvis ?: operator
- add foreachIterableExpression to match old compiler (which only allows certain expressions)
- allow both byref and unused on the same function parameter
- rename methodCall -> functionCall
- rename memberCall -> methodCall
- add named parser rule for functionReference
- move everything that isn't expression(s) with operators into primary
- expression is now just the left-recursive rules and prefix operators
- add named parser rules for struct, dictionary, error, array initialization
- remove special-case for named parameters with := from function call argument, because it is ambiguous with assignment
- Moved array access, object member access, and object method calls to navigationSuffix
* Regen grammar