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.
yeah we don't need to. Shall I just remove it then?