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
@karlnapf well I thought that since our last discussion with @vigsterkr and @sonney2k regarding this num_feature thing, having a copy_dimension_subset in CFeatures would ultimately result in this method being unimplemented in all feature classes except for CDenseFeatures and CSparseFeatures :(