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 ummm.. well, its in public API of CFeatures.. so.. But since we have kept num_features thing out of CFeatures since it doesn't make sense for all feature types, maybe this method should not be here at all. Maybe a helper method in CFeatureSelection should handle it, like CFeatureSelection::get_num_features. What do you think?