Make argument parsing less arcane
Make argument parsing less arcane

The new structure is more verbose, but easier to understand,
and easier to add support for additional options and features.

ctrueden/jrun,ctrueden/jrun