When parallelising also check putting all left commands last

This will be important when trying to generate better parallelisations.
Improved parallelisation

After the initial (old) parallelisation we try to improve the bug
by rewriting
  Cmd1
  Cmd2 | Cmds
  Cmd3
to
  Cmd2 | Cmd1
         Cmds
  Cmd3
or
  Cmd1
  Cmd2 | Cmds
         Cmd3
Here Cmd | Cmds isn't restricted to {par, Cmd, Cmds}, but can be
any par where Cmd can appear at an arbitrary position and Cmds is
the rest of the commands. For instance
  {par, Cmd1, {par, Cmd2, Rest}}
would match Cmd2 | [{par, Cmd1, Rest}].
Pretty printing bugs

Ignores all but function names and prints as
  foo
  bar | baz
        boo