Implement !: vim command, rewite argument parsers for Cabal/Make

Originally my goal here was just to implement zapcol, !:, but I ended up rewriting the parser for commands in cabal and Make as well to be much smarter.