Respect kernelspec metadata for syntax highlighting in nbconvert

This supersedes #6619.

* Add an optional pygments_lexer key to kernelspecs
* The HTML and Latex exporters now expose to their templates a `highlight_code` filter which uses the appropriate (HTML or Latex) formatter, and the lexer specified in the kernelspec, falling back to 'ipython3' if no lexer is specified.
* The config option for the default lexer to use in nbconvert is deprecated, to be removed in a future release. For now, it will still work, and override the kernelspec.
do you want to further specify that these values exist for cases where the value should differ from `language`? Something like

> This only needs to be specified if it should differ from *language*.

I know the sentence about language already means the same thing, but I want it to be clear that just specifying `language` is usually enough.