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
technically, this would be another unit test - one should always try to make them as small as possible.
having said that, it doesnt really matter here ;)