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.
@karlnapf no, just assigning proper m_num_features value at the time of set_p/set_q fixed that problem. now locally results are fine.