* Declare undeclared external functions
* Add ext: prefix to filename of external packages that may not be present on
every system
* Remove `company-grab-symbol-cons` function declaration since this function is
no longer used.
* Define `jupyter-load-language-support` which takes a client and loads the
language support definitions of the client's kernel language.
* Call `jupyter-load-language-support` when initializing a REPL buffer in
`jupyter-repl-mode`. Note this also takes care of loading the kernel support
for a `jupyter-org-client' since a REPL buffer is setup before evaluating any
`org-mode` source code blocks.
* Move language specific methods to their own files named `jupyter-LANGUAGE.el`
* Define the `jupyter-lang` method context specializer that
specializes against the kernel language of
`jupyter-current-client`
* Remove the kernel support API
* Replace the kernel support API with methods that can be
specialized using the `jupyter-lang` context specializer.
* Rename `jupyter-code-context-at-point` to `jupyter-code-context`
* Use `cl-defmethod` and specializers to handle the
different kinds of contexts
* Move the newly defined code context methods to their
appropriate locations
- A `jupyter-org-client` is a subclass of a `jupyter-repl-client` and replaces
the use of callbacks in `org-babel-execute:jupyter` to handle the insertion
of code block results in an `org-mode` buffer. `ob-jupyter.el` now only
contains the integration with `org-babel` and all integration with
`emcacs-jupyter` is placed in `jupyter-org-client.el`
- Introduce `jupyter-org-request`, which inherits all of the field of a
`jupyter-request` and adds the fields necessary for keeping track of the
source code block information a request was generated from during the
lifetime of the request.