set prefs resolution only once to avoid inconsistent states
make Options Screen accept gg.resolutions of arbitrary length
do not set fullscreen flag directly, as size may need adjustments

Entering or leaving fullscreen requires re-calculation of real screen
size, which can be different in windowed mode due to desktop margins.

Fullscreen flag is now set by gg.set_fullscreen(), a convenience
wrapper for gg.set_screen_size()
make sure screen size related calculations are performed at least once

If prefs file and command-line options were missing, gg.real_screen_size
was never calculated. Or it was done before gg.desktop_size was set, so
desktop margin was never applied at game start even for known resolutions.
be more restrictive (and smarter) when applying desktop margins

Margins for windowed mode are now applied only if screen size matches
desktop size, as it makes little sense to apply margin for a window
already smaller than desktop.

It also sets margins for width and height independently, so only the
needed dimension is adjusted.

For example, in a desktop of 1366x768:
- A 1366x768 window is reduced in both width and weight
- A 1024x768 window is reduced in height only
- A  800x600 window is not reduced at all
add difficulties list and current dificulty name, to be used later
display current game difficulty in map screen

Options Screen would perhaps be a more suitable place for displaying this info, but:
A) would require special code in Options screen to behave differently when invoked
from map screen (in-game) or main menu (no difficulty displayed)
B) Options screen is going through major changes regarding resolutions and on-the-fly
i18n, so better wait those branches to avoid merge conflicts

Another great location is map's "Menu" dialog, which would also require special
coding to make a SimpleMenuDialog be dynamic and translatable.
restart game if language changes