Begin moving ui code to CursesUi
Move focus functions to CursesUi
Pass package lists to enable_curses()

This feels a little strange, maybe the curses frames should not be
deleted / reconstructed whenever enable or disable is called.
Move resize handling to CursesUi
Move update_display to CursesUi
Clean up program.h

Remove moved functions, clean up includes.
Set internal CursesUi variables private
Restore correct resize event handling
Hide CursesUi constructors
Update to current optdepend handling
Add an astyle pre-commit hook & initial run