Use of DateTime<Local> can lead to excessive inspection of the system
timezone.
Instead, propagate only a timezone-compensated NaiveDateTime throughout
the widgets.
1. Implement new layout API, replacing previous hard-coded layout.
2. Make the widgets (previously modules) configurable.
3. Split some widgets into smaller modules.
4. Configuration file (reluctantly JSON at time of writing).
5. More correct damage handling, copying damage to next buffer.