Tidy up.
Support multiple commands, and passing additiona data into Exec.

(We'll need this for Completion).
Basic hard-coded implementation of completion.