Fred: rename cache_this_move -> move_cache
single_unit_info(): add flags for abilities
get_gamestate(): add and rename unit tables
get_gamestate(): add enemy reach and attack maps
fred_gamestate_utils: add new function get_gamedata()

This combines all the gamestate tables into a single table, so that it
can be passed as a single table to functions needed a lot of this
information.  The individual tables are (for the most part) still
returned by get_gamestate(), as that is slightly faster than always
dissecting the big table.
fred_attack_utils: adapt to the renamed gamestate tables
fred_attack_utils: new function get_attack_combos()

This is supposed to take over for several of the functions in ai_helper
and battle_calcs and uses the new gamestate data (and is therefore
usually faster).
get_attack_combos(): pre-filter reachmaps calculation

Don’t calculate new reachmaps if the unit could not get to the attack
hexes in the first place.
fred_gamestate_utils_incremental.get_unit_defense: change parameters

Pass a unit copy (or proxy unit) instead of its id and location.  This
is done to facilitate calling this function.
get_gamestate(): change how units with MP are extracted from map

The new method is slightly faster.
Fred: refactor attack evaluation to use new utils functions

*** This version should not be used for playing ***

While it is functional, there are quite a few things that are currently
not working very well (or entirely disabled, such as village grabbing),
but this is already a monster commit, so I want to get it out there.
This uses all the new (and faster) utility functions, but it meant that
the entire attack code had to be rewritten.  Other parts of the code
have not been adapted yet.
It also includes some general changes/fixes (such as not caching
counter attacks, as that gives wrong results) that did not make sense
to separate out.