Use common variants for open and close delimiters

This common representation for delimeters should make pattern matching easier. Having a separate `token::DelimToken` enum also allows us to enforce the invariant that the opening and closing delimiters must be the same in `ast::TtDelimited`, removing the need to ensure matched delimiters when working with token trees, (for example, [in gl-rs](https://github.com/bjz/gl-rs/blob/ee19f131dfea45f02d3e45c717c17549b566fa01/src/gl_generator/lib.rs#L277-L278))