Close #60: Add full option definition.

Defines all options, required and optional, with type, defaults, and description.
Old branch. Just rebased and pushed (had to force-push)