Make most Cli methods private and move message formatting into its own class.

This neatly solves my dilemna about testing private methods of Cli - the answer
is that they should (in this case) be public in another class.
Improve README