widgets: Queue up clicks, such that all mouse clicks are processed.

The widgRunScreen() still only returns one value, so the effect of some mouse clicks is still lost, but a few less
mouse clicks should be randomly thrown away, now. Only the widget system currently reads the click queue.

Extending KEY_PRESSED, KEY_RELEASED and KEY_PRESSRELEASE with KEY_PRESSRELEASEPRESSRELEASEPRESSPRESSRELEASE didn't
seem like the optimal approach to fix the issue.
widgets: Cleanup, replace remnants of C-style virtual functions calls with native C++ virtual functions.