widgets: Cleanup, replace C-style virtual functions calls with native C++ virtual functions.
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.
widget: Try to eat less mouse clicks.

The widgRunScreen() function now returns a std::vector, and the most important mouse clicks (on in-game menus, that
is) are less likely to be ignored.
Merge branch 'bugfixes' into 3.1