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)