Added CPreprocessor::apply() and CFeatures::copy_dimension_subset() methods

@karlnapf Please have a look! I added
- `CFeatures::copy_dimension_subset()` method which stays unimplemented in base class but works in CDenseFeatures. Its possible to use this with subsets as well.
- `CPreprocessor::apply()` method. Subclasses use this as a wrapper to handle specific cases.
as in, if `apply_to_string_features()` fails, we say with a NULL return that preprocessing failed! but I just checked that currently all existing string preprocessors just return `true` in all of these! So I think now there is no point to have the NULL thing.