Continue work on shell:
- Support the exit command (not tested yet)
- Break subcommands into private methods where possible.