internal/lsp/semantic.go: generate semantic tokens
internal/lsp/semantic.go: generate semantic tokens

This Cl adds all the support for producing semantic tokens.
vscode 1.49.1 (the current version) does not ask for semantic tokens;
vscode-insiders does.

There are no categories for statement labels, nor for constant
values of boolean types. (The former doesn't exist in Typescript, and
boolean isn't a type in Typescript.)

The CL after this one will provide for extensive testing.

Change-Id: I589f51d510b0e423c947f4d95f685e6ba696506d
Reviewed-on: https://go-review.googlesource.com/c/tools/+/258477
Run-TryBot: Peter Weinberger <dd140fb9530d791057dd8833ea6768ff65fcde71@google.com>
gopls-CI: kokoro <2ac7b1f3fa578934c95181d4272be0d3bca00121@google.com>
TryBot-Result: Go Bot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Robert Findley <9179eee875d1ee628c37fb47d7e749e855ffd21f@google.com>
Trust: Peter Weinberger <dd140fb9530d791057dd8833ea6768ff65fcde71@google.com>

golang/tools,golang/tools,golang/tools,golang/tools,golang/tools