CLI refactoring to remove logic from cli.rb

The goal here is to remove as much non-Thor code as possible leaving the door open to non-Thor options, allowing other tooling to reuse commands, allow for better command unit testing, etc.

While the line count actually increased, it is my hope the ultimately readability and separation of concerns wins out here.