major revision: get rid of named arguments, add notation for multi-pass options, add option descriptions, change how aliasing and option defitions work, etc