Fix vim write-as (:w ex command).

Parser had two major flaws:
(1) It was using a nonbacktracking choice, both of which had the same
parser at the start. Factor this out.
(2) It was doing them in the wrong order, due to a the first essentially
unconditionally succeeding if :w or :write is present.
switched the order we try them, since the :w <file> demands a space.

Fixes #658