Diff CLI

Pulled out the shell commands to their own file, and all the tests still pass, also made the first bits of the CLI command for diffing, more to come on that, but a good start