Advancing the GUI
Working button label alignment (center)
More GUI

- Label has a member bbox (bounding box, obv), size is now size in px (i
guess?).
- Button also has pos and size members.
- Added some label setters (can optimize: no need to regenerate glyphs
when just modifying color or position).
- Cooler main screen.
Changed base UPDATE to UPLOAD

- Update is a logical update, upload is graphical changes update.
-
Handle (badly) button states.
Added version label in main screen
Base setters return a pointer o themselves, to allow nested formatting.

- e.g: button = makebutton()->set_color()->set_font(), etc...
GUI event handling, layout mouse, button click callback, etc.

- GUI holds mouse position, not mouse state. Pointer in layout updated.
- GUIlayout has handle_event. Stores in a pointer, tells components to
check event from the pointer (using the child<parent relationship).
- STATE should forward catched event to the layout.
- Slowly forcing pure virtual methods where convenient.