Allow MD modules to register energy output fields themselves
Currently, the energy output fields can not be modularly expanded, but need to be registered explicitly and external to the modules.
This leads to MdModule code leaking into the rest of the code base and breaks the encapsulation of the modules.
For now this is solved with a Module Callback class MdModulesEnergyOutputToDensityFittingRequestChecker.
For any other module that would like to add output to the energy fields, there would have to be another
MdModulesEnergyOutputToXXXXXXXRequestChecker class, which is not desirable.
Instead a better model might be as suggested by Mark, being concerned about the massive proliferation of RequestChecker types needed to implement all of this.
"One can avoid the types if we would make infrastructure EnergyOutput early and pass it to all modules to use directly to register their intent to produce energy output, have handles returned to indicate where the data will go (or maybe use ISerializer?), later be notified on a step when energy output will be expected (to organize the computation), and then be called back to put the values where the output routines will handle them. That's much the same model as we think will work well for compute_globals successor."