Parse fully-qualified associated types in generics without whitespace

This modifies `Parser::eat_lt` to always split up `<<`s, instead of doing so only when a lifetime name followed or the `force` parameter (now removed) was `true`. This is because `Foo<<TYPE` is now a valid start to a type, whereas previously only `Foo<<LIFETIME` was valid.

As a result, this breaks code that looks like this:

```rust
let x = foo as bar << 13;
```

Change such code to look like this:

```rust
let x = (foo as bar) << 13;
```

Closes #17362.