split up match-command into more pieces and rename it to parse-command because it sounds better
change make-command to a macro; allows using -> instead of > (looks prettier) and | doesn't need to be handled specially