Improve double-checked locking efficiency

This improves the DCL efficiency of some commonly-used classes
(Effective Java 71), loading the volatile field into a local
variable.
Removed unused lazy value classes
Fix locking bugs in preference snapshot caching
Replace custom cache locks with memoized suppliers

Several data processing classes used custom cache locks.  This uses
Suppliers.memoize instead.
Remove unused ExecHelpers class
Enable Groovy globally for tests
Implement the new TaskGroup (#451)

- Add TaskGroup
- Test TaskGroup
- Deprecate TaskGroupRunner
Make train-test eval job use TaskGroup (#426)

- Use TaskGroup to run train-test eval tasks
- Make TrainTestEvalJob implement Callable to clean up exceptions
- Delete TrainTestJobException