Bit more general clean up

* BitmapButton: Make update & draw methods virtual.
* Text: Implement global_bounds method.
* Rect: Change Point2, Point2i constructor argument types to Point2,
Size2.
* Button & BitmapButton: Fix indention inside ::on_event method.
Additional features for BitmapButton

* Implement initial logic for mouse hover action enter/leave
events for BitmapButton::on_event.
* Update & draw button before bitmap is overlaid.

* examples/gui: Initial commit of bitmap button resource
button.png.