[RFC] Preprocessing API for stats/ML
from #384

> While am at adding new features to PCA, I'm considering a couple of additional options:
> 
> - Adding a preprocess enum to the signature:
> ```Nim
> type FeaturePreprocessing = enum
>   Auto
>   NoPreprocessing
>   MeanCentering
>   MinMaxScaling
>   StandardScaling
>   RobustScaling
>   ...
> ```
> 
> - Alternatively pass a scaler object that will be applied per columns (features)
> - Alternatively pass a scaler proc that will be applied per columns (features)



#### Note on deep learning normalization
We might not be able to unify the scaling/normalization on the stats/machine learning side which work on a column basis with the deep learning normalizations schemes which work on a whole tensor/pixels or color channels basis (normalize Red, Green, Blue separately):
- Deep learning normalizers might have specific schemes: Tensorflows scale to [-1, 1] and PyTorch does standard scaling (mean = 0 and unit variance)
- You need to normalize with what was used for pretraining
- data augmentation #345 is pretty much an art
- see also https://github.com/mratsim/Arraymancer/issues/245