Shut down kernels in parallel

When stopping the notebook server, it currently sends a shutdown request
to each kernel and then waits for the process to finish. This can be slow if
you have several kernels running. This makes it issues all the shutdown
requests before waiting on the processes, so shutdown happens in
parallel.

KernelManager (and MultiKernelManager) gain three new public API methods
to allow this:

* request_shutdown (promoted from a private method)
* wait_shutdown (refactored out of shutdown_kernel)
* cleanup (refactored out of shutdown_kernel)
Simplify KernelManager.cleanup()
Expose keyword arguments of KernelManager methods on MultiKernelManager
Rename wait_shutdown to finish_shutdown
Remove obsolete Windows workarounds, per @minrk's testing
Merge pull request #5764 from takluyver/parallel-kernel-shutdown

Shut down kernels in parallel