actually use IPKernelApp.kernel_class

and make it configurable.
Merge pull request #3079 from minrk/kernel_class

Actually use IPKernelApp.kernel_class and make it configurable.

This makes it easier to write IPKernel subclasses that implement custom logic, such as a kernel in a different language.  Tested in the creation of a native Julia kernel.