Split gui from functionality

These are some fairly modest changes made to kano-settings to split the functionality away from the gui - a lot of the functionality has been moved to the system folder.
I'd put is_changed inside set_keyboard