General window code refactoring
This MR moves most of the window creation code into GtkBuilder .ui files and splits each element of the settings pages into separate objects.
The aim of this MR is to make the code easier to maintain. There are no functional or cosmetic changes.