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
mmmh, no hiding in in such a specialised class is not a good idea. then rather keep it public and expose it. i just though nobody might ever call this, so rather hide to not confuse people. but maybe actually somebody wants to call it, so keep this stuff, sorry for the confusion :)