CLI

This wraps the mess of functions that were only available as ruby code or in `main` are now commands exposed in `commands.[ch]` 

This was done so it's easier to work with the code to add new things without having to constantly patch `main()`.

The commands exported to the command line are stored in `commands[]` as `cmd_t` structures, the individual command functions are not exported, `cmd_find(char*)` should be used instead.