Refactor TestUser to simplify data routing

- Make TestUser an interface
- Implement LenskitTestUser directly against the recommender
- Remove need for suppliers of rating/prediction data
Cache prefetching DAOs in AbstractDataSource
Implement item selectors (#388)
Support metric-configurable recommendation (#388)

This allows metrics to configure number, candidates, and excludes of recommendations.
Implement nDCG Top-N metric (#388)
Expose the recommender from the test user
Cache recommendations in the test user
Add Top-N actual length metric (#388)
Return null from TestUser instead of throwing
Fix train-test NPE in no-predict situations
Detect unsupported operations in metrics