Also moves icon and color definitions to the backend and makes it so the
new workspaces get created with a different icon color for each index.
If an ephemeral window has more than one tab, always create a new window
when switching workspaces
Also fixes workspace accelerators on macOS
Because Electron now has a macOS 11 minimum supported version, we have
no blockers to adopting the latest Go toolchain. This also lets us use
the new `range` features in Go, among other things.
NodeJS 20 is almost EOL so I'm updating our workflows to use NodeJS 22.
This does not change anything about our app, which will still use NodeJS
20 until Electron shifts away from it. NodeJS 22 is fully
backwards-compatible with NodeJS 20 so there's no issue from a testing
standpoint.