Add tests for evaluator output files
Implement task graph execution
Use task graph for train-test evaluation
Remove task group class in favor of graph
Refactor train-test evaluator

- Start separating external and internal algorithms
- Use lists to report results from metric accumulators
Rename train-test job to be shorter
Refactor output management in the evaluator
Refactor eval jobs

- Make separate internal and external eval jobs
- Simplify algorithm instance logic
drop public
Simplify algorithm instance interface
Make data sets expose configurations
Simplify SPI routing in recommender configuration
Refactor Grapht support code into new package
Refactor Grapht support code into new package
Allow recommender instantiation strategy to be customized
Improve sharability and test for removal

- Make item-item build context shareable
- Test that shareable but transient nodes are removed
Merge graphs in LensKit evaluation jobs
Implement component caching (#306)

- Add component cache object
- Use it to implement caching between runs
add missing license headers
Make item-item build contexts serializable