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.