Move to lexical binding and minor cleanup
Change syntax to get rid of ugly :buffer and :cmd

Not entirely sure what I was thinking, but they confuse and clutter up
the interface.
Not sure why I was using cl-defun there