Add some modularization.

I'm not sure how useful this will be, but the game_events::manager
constructor was looking a bit long.
Split unit_mover::to_reveal_ into ambushers_ and blocked_loc_.

This is a slightly clearer methodology, and more robust. (There
were parts of the code that treated to_reveal_ as a list of only
ambushers. It was correct, but the correctness was not easy to see.)

Also, this should help with my next edit.
Delay reading the ambush alert from units until needed.

I don't know how big a savings this will be, but the alert was
being read each time a route was calculated; now it is read once
as ambushers are revealed.
Small optimization of unit_mover::validate_ambushers().
Automatically clear a unit's visibility cache when UNCOVERED changes.

Changing the UNCOVERED state does make the cache invalid, and this
way, someone changing the UNCOVERED state does not need to remember
that a cache exists.
Rework unit::invisibility_cache_ so it only applies when not UNCOVERED.

This might help performance a little since checking STATE_UNCOVERED is
fast, and uncovered units will not need to populate their invisibility
caches. It also means that my previous edit to unit.cpp is no longer
needed.
Add sighted events for ambushers discovered while moving.

I thought I had included this much earlier.
campaignd: Implement read-only operation mode

This can be enabled in the server config by setting read_only="yes".
The default value is 'no'.
filesystem: Ensure SHGetSpecialFolderPathA call uses WINAPI call conv

gfgtdf reported on IRC that building Wesnoth on MSVC++ 2010 and
using a relative path to My Documents with the --config-dir command
line swich results in a runtime error. Paraphrased:

> The value of ESP was not properly saved across a function call

This is caused by mismatched function call conventions between
GetProcAddress()'s return value (__stdcall, a.k.a. WINAPI), and the
function pointer used to store and later call that address (__cdecl).

This commit should fix the issue by ensuring the function pointer is
set to use the WINAPI call convention.
Expand tabstop in changelog
filesystem: Amend previous WINAPI call enforcement fix

C function pointer declarations are evidently not my forte. This
fixes a build-time error with MSVC++.

Also, rearranged a bit of code using a type declaration so I don't
feel like gouging my eyes out every time I read the full function
pointer type specification, and used reinterpret_cast instead of
a C-style cast.
Translatable months and weekdays. Missing am/pm designations.

A simple std::strftime wrapper was introduced, which takes care of date
translations when needed. I.e. if correct locale is not available, or
locale in use does not support am/pm designations.
Maintain difficulty in MP, as it is maintained in SP.

This solves the problem of always seeing a "Medium" difficulty in saves
preview pane for MP campaigns.

N.B. it should not be required to set difficulty in multiple places for
things to work correctly. In the future, it should be made so that
setting difficulty in "game_state::classification().difficulty" would be
enough.
Revert a53a6f5 as it might stop players from joining a game.
SotBE S2: ensure that second speaker is on the map

... as opposed to on the recall list.  Also include wolf riders other
than Vrag.
SotBE S2: ensure the dialog works even if Vrag has been killed
SotBE S2: don't show signpost until objectives change

It serves no purpose before that.
SotBE S2: clarify the intermediate objectives
SotBE S2: disable gold saving for new recruitment AI for Side 2
Update Xcode project file