Zapshell

This originally started out as an implementation of :!, but along the way I decided to rework the parsers for the similar :cabal and :make to be unified and work alot better/smarter. So the code for !: is actually a very small amount of this commit, most of it is making things like

:!echo "hello \" world"

work properly. (And similarly for :make and :cabal although the use-cases here are much less obvious).

Left out is weird stuff like

:!make build"all"

which at the time I was coding I didn't even know was valid, and I'm not sure that theres a particular incentive to be that particularly compliant with the way shells operate.