Clean up double-checked locking

Based on Effective Java 77, this cleans up double-checked (and single-checked) locking instances to first retrieve the volatile member into a locale cache variable.
Merge branch 'master' into feature/elehack-concurrent-cleanup
Simplify DAGNode caching using Suppliers.memoize
Make ClassProxy's classloader handling saner