[TASK] Add command line interface script

The bin directory is tricky for projects that don't actually have binaries. This CLI is expected to grow a lot and it should be split into multiple files. Those other files definitely don't belong in bin and we don't want them in the src directory, so I think we want a cli directory. The question is whether we should put something in the bin directory. We could arbitrarily split the source code up and just put the topmost layer there, but that feels awkward. I would prefer to keep all the source in one place (the cli directory), then perhaps put a one-line bash wrapper script in bin.