Switch `<>` back to `[]`

Here we go.

Thoughts?
We can't get rid of `foo::<>()`. The exact same problem that required us to use that syntax would require us to use `foo::[]()` with the new syntax. Which is to say, we use `::<>` in order to disambiguate the `<` token between being an operator and being a generic parameter list, and we'd have the exact same issue with `[` (as that's also the token that starts a subscript operation).