Install multiple versions of same extension
Install multiple versions of same extension

This adds support for installing multiple versions of the same
JupyterLab extension, fixing #6491.

It reuses the syntax for
[yarn add's alias command](https://yarnpkg.com/lang/en/docs/cli/add/#toc-yarn-add-alias)
so that you can do:

```bash
jupyter labextension install test-1@npm:jupyterlab-test-extension@1.0
jupyter labextension install test-2@npm:jupyterlab-test-extension@2.0
```

This is a real extension I published two versions of, with different
extension ID's in each, to test with
https://github.com/saulshanabrook/jupyterlab-test-extension.
Once you install both of them, you should get two different console
logs on startup.

If we run `jupyter labextension list` after installing these, we see
both versions:

```bash
JupyterLab v1.0.2
Known labextensions:
   app dir: /usr/local/miniconda3/envs/jupyterlab/share/jupyter/lab
        test-1 jupyterlab-test-extension v1.0.0  enabled  OK
        test-2 jupyterlab-test-extension v2.0.0  enabled  OK
```

And we can uninstall each separately:

```bash
jupyter labextension uninstall test-1
```

As well as update each of them:

```bash
jupyter labextension update test-1
```

## How?

Normally, zipped extensions are stored with the name like
`jupyterlab-test-extension-1.0.0.tgz`. However, we need to differentiate
extensions installed as aliases, without mucking with their actual
contents.So we save them instead like
`test-1@npm:jupyterlab-test-extension-1.0.0.tgz`.

Then, we we go to read our packages, we know they have an alias.

jupyter/jupyterlab,jupyter/jupyterlab,jupyter/jupyterlab,jupyter/jupyterlab,jupyter/jupyterlab