This is useful when tests encode information in these names. Currently,
this is pretty limited because names consist of only alphanumeric
characters and '_'.
Arguably, writing foo${name}^bar instead of foo$name^bar might also be a
bit more readable in general.
The new syntax should be fully backwards compatible (if I haven't missed
anything). I tested this against clangd unit tests and everything still passes.
I thought about just using std::pair<clangd::Position, llvm::Optional<llvm::StringRef>> instead, but that is pretty verbose and unreadable here IMO. Another nice thing about subclassing here is that we can keep the API stable and don't have to introduce an additional pointWithPayload()` getter like in the base class.