I've started modifying the way kernels function.
A single kernel manager will be responsible for doing kernel computations (as before).
 A kernel type will from now on extend a base abstract class KernelProduct.
 This will allow simple code for grid searches and future kernels will be easily implementable.
Finished adding all the kernel types according to the new class extension model.
Added the kernel manager which allows older code to function as before.
It uses the new type of kernels.