AbuseFilterParser supports some peculiar syntax which is used in the wild ~~so we presumably have to support it~~:
- `(foo|)` is equivalent to `foo`
- `(foo&)` is equivalent to `false`
- `(foo&!)` is equivalent to `foo`
- `(!)` is equivalent to `true`
In all cases, the missing argument of a boolean operator is treated as `null`.
With this fact, people could inadvertently break filters if they leave a leading operator, so we should really stop allowing it. The standard way would be to first add wfDebug to the code, see how many errors we get, then go on with harder deprecation and then drop support.