jupyter_kernel_handler allow the addition of custom functions before, during and after the kernel has run