Extract parses a showboat document and returns the sequence of CLI commands
that would recreate it. OutputBlock and ImageOutputBlock are skipped since
they are generated by running code blocks. If outputFile is non-empty it is
used as the filename in the emitted commands; otherwise the input file path
is used.
Pop removes the most recent entry from a showboat document.
A "run" or "image" entry consists of a code block and its output, so both
blocks are removed. A commentary entry is a single block.
The title block cannot be removed.
Verify re-executes all code blocks and compares outputs.
If outputFile is non-empty, an updated copy of the document is written there.
If workdir is non-empty, code blocks are executed in that directory.