Create lenskit-cli module (#448)
Implement lenskit eval command (#448)

- Implement basic infrastructure for command line parsing
- Implement eval command
- Deprecate lenskit-eval
Implement test for lenskit-cli eval (#448)
Implement reflection-based command testing
Add missing license headers
Implement pack-ratings command (#448)
Add lenskit version command
Use common input data for rating packing (#448)

- Add InputData utility
- Use InputData for pack-ratings
- Use argument groups
Tweak pack-ratings, add initial train-model
Configure and implement logging for CLI (#448)
Implemen train-model command (#448)

- Implement and enable train-model
- Add all of LensKit as runtime dep of lenskit-cli
- Move ClassDirectory to lenskit-core, use in lenskit-groovy
Write Recommend command (#448)
Remove lenskit-package and add licensing to cli (#448)

- Remove lenskit-package
- Add license scripts into lenskit-cli packaging build
- Refactor build preparation into ant file
Implement graph command (#448, #339)

- Refactor graph dumping to be more resuable
- Add graph command to CLI
Add CLI to release notes (#448) [skip ci]
Merge pull request #489 from elehack/feature/elehack-cli

Implement LensKit CLI (closes #448, #339, #447).