squash! rebase -i: Explicitly distinguish replay commands and exec tasks

There are two kinds of to-do list commands available. One kind replays a
commit (`pick`, `reword`, `edit`, `squash` and `fixup` that is) and the
other executes a shell command (`exec`). We will call the first kind
replay commands.

The two kinds of tasks are scheduled using different line formats.
Replay commands expect a commit hash argument following the command name
and exec concatenates all arguments to assemble a command line.

Adhere to the distinction of formats by not trying to parse the `sha1`
field unless we are dealing with a replay command. Move the replay
command handling code to a new function `do_replay` which assumes the
first argument to be a commit hash and make no more such assumptions in
`do_next`.