While troubleshooting #376, it was found that JKG is not compatible with jupyter_client >= 8 due to changes it's made to KernelClient. We should also have it depend on classes from jupyter_server rather than notebook and move to AsyncMappingKernelManager and async methods in general. In addition, it should be defining a log_format that includes timestamps to assist with troubleshooting, etc.