Factor out widget-specific options

This cleans up the API significantly, and reduces duplication.
Many more widgets
Widgets for dates and times