extract the 'not-options'
a way to run Uncertain without terminating

also, the doctests were giving the wrong example: don't call "error",
call "fail" instead.
phase1: HawkSpec as an intermediate representation

This refactoring is taking longer than expected, so I am staging its
deployment. This is the first phase, in which HawkSpec is used at the
very beginning of the program to parse the arguments, and then
immediately afterwards the old format is recovered from the HawkSpec and
the rest of the program continues as before.