OTHER: 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 or nuked, and try to avoid using big
fat structs as parameters and instead be more specific.
OTHER: Add beginning of an integration test for the cli.