* Make notebook renderer activate potentially async
- Allow activate to be `async`
- Make `getRenderer` always return a promise instead of the api result directly
* Add comment on why we use async
This implements the api described in #123540. Major points:
- Instead of having the `markdown-it` renderer pull it its dependencies, instead the dependencies can call `getRenderer` to import the object returned by the `markdown-it` renderer
- We try to detect if a renderer is using the old or new api. Old renderers are still run as globals while new ones are loaded with `import`
- I have only hooked up the new API for markdown renderers so far
* Better notebook markup renderer api
For #121256
- Use js modules for notebook output renderers
- Rename apis from `markdown` to `markup`
- Use imports and exports for apis instead of globals for apis
- Use esbuild instead of webpack so we can emit js modules
- Clearly split top level markup renderes from renderers that extend other renderers
* Use constant instead of comment for replacement