Additional implementation work of QuestionDialogBox interface

* QuestionDialogBox: Introduce choices getter method.
* QuestionDialogBox: Clean up update && draw methods.
* QuestionDialogBox: Introduce on_event method; this is the initial
logic implementation.

* 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
implementation.