add toString methods to similarity functions
improve logging of item-item build process
Build item-item build context with a provider
Implement sparse item-item neighbor iterator
Refactor neighbor iteration into a strategy

This makes neighbor selection for the default item-item model
builder a strategy with sparse and non-sparse implementations.
Update the release notes for #432.
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 pull request #432 from grouplens/feature/elehack-iibuild-cleanup

Logging and performance improvements to the item-item builder
Write test for root-anchored matchers (#344)

This test verifies that root-anchored context matchers work.
Implement recommender engine builder

- Create LensKit recommender engine builder, providing API points for #449 and #337
- Factor out recommender engine building to new objects
Factor out recommender engine loader (#337)