Add template system for GUI components
 - Template hiearchy
 - Template configuration loading
 - Use template as basis when creating a new component instance

Refactor GUI classes into subpackages