Commands Refactor Part 2

We split #196 in two parts. this is the second. (#262 is the first). This builds on all the changes to commands/.
I should have left a TODO there. To fix it we'll have to have something in the API for overriding the help text with a hand-written string (or maybe overriding with a function).