Refactored kernel selection and few minor changes

- Put kernel selection under a more general base `CKernelSelection`. `CMMDKernelSelection` works as a subclass of this. `CKernelSelection::select_kernel()` method is kept abstract and `CMMDKernelSelection` overrides this. @karlnapf @sejdino let me know your thoughts on this.
- Added a few setter/getters in CKernelIndependenceTest and CHSIC that are required for feature selection.
i guess it doesnt matter, but yes, that avoids anything not being synchronised