Reverse the messages

This changes the message display back to its original behavior.

Messages in the main window are display from bottom to top, newest at the bottom.

I moved the display message completely into the `Messages` class as it seems more appropriate, it does not use any data from class `game`. Both message display methods (sidebar vs. separate popup window) are to different to put them into one function.

I moved the "vvv" and "^^^" markers at the bottom away from the center, so they don't override the "Press ... to return" string.


----

Before someone asks:
```
const game_message &m = ...;
calendar timepassed = calendar::turn - m.turn;
```
This can not call `operator-(calendar&rhs)` because the right side is const. Therefor the compiler converts the right side (`m.turn`) to int and calls `operator-(int rhs)`.

That function creates a temporary calendar object and invokes the constructor `calendar(int turns)`. This constructor *adds one to the day*. In other words:
```
calendar x(1);
calendar y; y = 1;
```
Produce calendar objects with different content: x has `calendar::day` set to 1, while `calendar::day` is 0 for y.

Why does the constructor `calendar(int turns)` add one to the day? That seems wrong.

I added const qualifiers to the operators of `calendar` and the parameters to avoid this. Now `calendar::turn - m.turn` correctly invokes `calendar::operator-(const calendar&rhs)`.

Still either the constructor should be changed or the `operator-=(int rhs)` should not use that constructor.

Of course this fixes #7420