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.
Sorry about being annoying, but in any error message, also state the (wrong) value of the variable you are checking. And, as you did, the allowed values