Refactor option handling to add features.
Refactor option handling to add features.

We now print out which required options you omitted, which is much much
nicer for the user.

Note: I may have broken something here - the --swap option used to just
fire a DeployRequest (and ergo require --version, which makes no sense
for swap), leaving the SwapRequest class unused... I've put the SwapRequest
class back, on the basis that it looks more correct, and we flattened
the history, so I can't go digging to work out the whys.

tim-group/orc,tim-group/orc