Moved CLI command index into its own module
Use GADT to represent command nodes

Avoids needing to create an object for every command.