Replace references to 'name' with 'command-name'

To avoid shadowing 'clojure.core/name' (a function we actually
use in this namespace), we're going to refer to a command name
as 'command-name' rather than just 'name' wherever we need to
make such a reference.
Flesh out argument parsing a bit more

While the complete command argument parsing functionality still
isn't written, we now have a better idea of what the process of
parsing command arguments will actually look like in terms of
what functions will be applied to what.
Fix various compilation errors

Most were in one way or another the result of my misunderstanding
the 'let' binding form syntax to take a vector of vectors rather
than a single vector as a binding form. Several others were
related to improper declaration order of functions.