Switch `<>` back to `[]`

Here we go.

Thoughts?
This is problematic, colliding with indexing—indexing requires an expression inside the `[]`, specifying generic parameters requires a type or types. Thus I suggest that `foo::<int>()` is changed to `foo::[int]()` rather than `foo[int]()`, for now at least.