Add Span and separate open/close delims to TTDelim

This came up when working [on the gl-rs generator extension](https://github.com/bjz/gl-rs/blob/990383de801bd2e233159d5be07c9b5622827620/src/gl_generator/lib.rs#L135-L146).

The new definition of  `TTDelim` adds an associated `Span` that covers the whole token tree and enforces the invariant that a delimited sequence of token trees must have an opening and closing delimiter.

A `get_span` method has also been added to `TokenTree` type to make it easier to implement better error messages for syntax extensions.
Rename TokenTree variants for clarity

This should be clearer, and fits in better with the `TTNonterminal` variant.

Renames:

- `TTTok` -> `TTToken`
- `TTDelim` -> `TTDelimited`
- `TTSeq` -> `TTSequence`
Prevent some vector reallocations
Use standard capitalisation for TokenTree variants
Reduce the size of the TokenTree
Add a KleeneOp enum for clarity
auto merge of #18229 : bjz/rust/ttdelim, r=alexcrichton

I have renamed the `TokenTree` variants to be longer and clearer, and to use standard capitalisation. They should also fit in better with the existing `TTNonterminal` variant.

The new definition of  `TtDelimited` adds an associated `Span` that covers the whole token tree, and moves the opening and closing delimiters out of the vector of delimited token trees. This came up when working [on the gl-rs generator plugin](https://github.com/bjz/gl-rs/blob/990383de801bd2e233159d5be07c9b5622827620/src/gl_generator/lib.rs#L135-L146).

The `bool` in `TtSequence` has been replaced with a `KleeneOp` enum. This should make the intent of the code clearer (I had trouble understanding it).

A `get_span` method has also been added to `TokenTree` type to make it easier to implement better error messages for syntax extensions.

[breaking-change]

Renamed:

- `TTTok` -> `TtToken`
- `TTDelim` -> `TtDelimited`
- `TTSeq` -> `TtSequence`
- `TTNonterminal` -> `TtNonterminal`

New definition of `TtDelimited`:

~~~rust
TtDelimited(Span, Rc<(Delimiter, Vec<TokenTree>, Delimiter)>)
~~~

New definition of `TtSequence`:

~~~rust
TtSequence(Span, Rc<Vec<TokenTree>>, Option<::parse::token::Token>, KleeneOp)
~~~