Rewrite the metric interface

This rewrites the metric interface to make it simpler to understand and easier to test.
Fix broken nDCG tests
Merge resource and class output dirs
Small build fixes
Fix broken train-test task tests
Delete unneeded version.properties
Improve Metric javadoc
Make metrics type-based

- Make AbstractMetric support result types, auto-converting to rows
- Make most metrics take advtantage of this
Remove unneeded classes
Add missing license headers
Fix accuracy tests
Implement MRR metric
Fix bad tag
Add test cases for MRR (#515)
Add missing license header
Fix rogue rename
Clean up documentation and naming for metrics

- Document metric workflow
- Rename accumulators to contexts