Close #60: Add full option definition.

Defines all options, required and optional, with type, defaults, and description.
Its inconsistent for `_setup_defaults()` to take no parameters, but for `_validate_options()` to take `options` as a parameter. They should both do one or the other... but not be unique IMO.