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
Remove obsolete task group runner
Update release notes for #451 & #426
Merge branch 'master' into feature/elehack-cleanup
Simplify task group (#451)
Merge pull request #452 from grouplens/feature/elehack-cleanup

Multithreading and related cleanups.

- Closes #451
- Closes #426