Use `std::variant` to represent corrections in `CaloFutureCorrectionBase`
Use an std::variant
to represent the various corrections.
This allows the error checking and correction specific caching to
be moved into each individual correction.
It also addresses some (most?) comments made as part of #121
Edited by Gerhard Raven