Close #60: Add full option definition.

Defines all options, required and optional, with type, defaults, and description.
This should be pulled out of the loop, so that a single exception is raised that describes all of the missing options.