Merge pull request #4624 from RosettaCommons/vmullig/threadsafe_approximate_buried_unsat_penalty
Make the ApproximateBuriedUnsatPenalty threadsafe
The ApproximateBuriedUnsatPenalty caches `symm_vs_self_asu_resnum1_`, `symm_vs_self_asu_resnum2_`, and `symm_vs_self_rotamer_count_` inside of itself for computing pairwise interactions in the context of a symmetric IG. This prevents threadsafe calculation, and is also generally unsafe: it means that the scoreterm accumulates state on repeated calls to `ApproximateBuriedUnsatPenalty::evaluate_rotamer_pair_energies()`, and assumes that the function calls from external code will proceed in a particular order. This PR has refactored this, which allows the `approximate_buried_unsat_penalty` scoreterm to be used with multi-threaded interaction graph precomputation.