Added class CDependenceMaximization for feature selection

@karlnapf @sejdino please have a look.
@karlnapf well, if getting all the labels and using memcpy won't work if features and labels have subset initialized. This is a bit slower approach but it does index conversion and its called only once per `apply()`. Matrix is needed to create a `CDenseFeatures` instance. However, I think this memory can be freed when `apply()` is done. Therefore, a `cleanup()` call can used to take care of this. Since this feature object is not available for public API and for internal use, I guess that would be good.