Parse bracketed `box` expressions

This lets the parser parse expressions like `box (1i + 2)` as `box() (1i + 2)`. Expressions are parsed greedily in `if`, `while`, and `for` expressions, so that `if box(foo) {} {}` is parsed as `if (box(foo) {}) {}`. This is the same behaviour as before this change.

Closes #15386.