Added CKernelDependenceMaximization and CBAHSIC in feature selection framework

Addition/changes are:
- Added feature selection to modular interface
- Pushed `apply_backward_elimination()` method from `public` to `protected`. This is done to prevent unexpected results if someone calls this on, for example, an instance of FOHSIC. This shouldn't be allowed. This has to be done by public API via `CFeatureSelection::apply()` call.
- Added temporary conversion of CLabels instance to CFeatures instance in `CDependenceMaximization::set_labels()` instead of `CDependenceMaximization::precompute()`. In case one just wants to observe the measures via public `CFeatureSelection::compute_measures()` call for experimental purpose, he should be able to do that without having to go through `precompute()` which is for internal purpose.
- Unit-tests for the public API
could we try to reproduce an example from the paper in the notebook for this?