Merge pull request #5581 from RosettaCommons/vmullig/lazily_load_scorefunctions
Ensure that scorefunctions are loaded from disk once, lazily, and in a threadsafe manner.
Currently, every time a scorefunction is requested by name, it's re-loaded from disk. This is inefficient. This implements scorefunction caching, and allows scorefunctions to be loaded once, on first demand (i.e. lazily), and in a threadsafe manner.
Because pull request #5573 generates a lot of extra chatter from extra loads of scorefunctions, this PR should be merged before that one.
This PR also updates the documents submodule to point to the latest master of the documents repo. It also fixes a bug in ExactOccludedHbondSolEnergy.cc: when a ScoreFunction was cloned, this energy method's EtableEvaluators were not deep-copied, since the EtableEvaluators lacked `clone()` methods. These have now been added and are invoked when the energy method is copy-constructed or cloned.
TODO:
- [x] Fix integration test failures with `shobuns` and `geometric_solvation`. The rest of the integration test changes appear to be expected cosmetic changes caused by scoring functions not being loaded over and over (so some repeated text disappears in the output log).
Note: Jack had a stale "changes requested" on this PR. I dismissed that after hearing verbally from Jack that he was satisfied following my changes and Steven's approval of the PR.