Introduce initial implementation of QuestionDialogBox widget

* MessageBox: Add derived_class type definition.
* MessageBox: Remove virtual keyword from update and draw methods.
* MessageBox: Introduce copy method & call method in
QuestionDialogBox's copy constructor & copy assignment operator's method
overload.
* MessageBox: Introduce special alignment handling logic of caption and
message texts -- this affects TopLeft, TopCenter, TopRight alignments
and keeps the message text from potentially overlapping with the caption
text.

* ListBox: Remove virtual keyword from update, draw, on_event and copy
methods.

* Window: Re-implement delegates getter method under public
method implementations.