gui: refactor widgets into separate files
gui: make NumberRocker a template, yay!