WiP: Clean up the CLI commands/helpers.

Crappy commit, but the CLI was a huge intertwined mess. Now all
sub-commands are in their own file, and utils.c has been cut down
to just a fraction of its size. A ton of util/command APIs have been
cleaned up do less more clearly, and try to avoid using big fat structs
as parameters and instead be more specific.