fix whitespace
add command line option --unit, -u, to run scenario as a unit test

This is the initial commit for --unit, -u, unit test option.
This option is a modified version of --test, -t. Scenarios will
run in the same context essentially, but will terminate on
scenario end.

The exit code of wesnoth is 0 (PASS) if the scenario ended with
LEVEL_RESULT VICTORY, or LEVEL_RESULT NONE.

The exit code of wesnoth is 1 (FAIL) otherwise.

Higher exit codes may reflect a failure for a reason other than
the scenario ending in defate.
make unit tests run headlessly

specifying --unit is similar to --nogui. that is, this check is
essentially ||'d in at all places where --nogui would be checked
add WML macros for unit test scenarios

contains "generic_unit_test", "return" and "assert" macros
add WML unit test examples, and include the test directory

add some trivial tests, and the _main.cfg files to ensure they are included
add wml unit tests two and three

- test two tests a basic property of events
- test three tests unit placement on the map in
  case of a collision
add wml_unit_tests test aggregator script

This bash script runs a sequence of WML unit test scenarios.
If all pass the result is 0.
If any fails, the result is 1, and the std::cerr stored in "error.log".
We also add error.log to the .gitignore list.

It shows how --timeout and --validcache may be used in such a script
unit test timeouts: first attempt

use an SDL_Alarm to try to abort the process if it goes over time.
correct thread model for unit test timeouts

it seems that child threads can't terminate the whole process,
so we need to instead use a worker thread and make the
main thread the timer / return thread.
add --timeout to wml_unit_tests script

use the timeout feature as appropriate for automatic testing
add replay validation to unit tests

after unit tests play, then unless --noreplaycheck flag is used,
they save a replay at the end of the scenario (using autosave
code path), without compression. then they try to load it and
play it to completion.
this is the initial attempt.
Insert lua_unit's contained pointer directly

Not copying the unit improves the speed of wesnoth.put_unit by two orders
of magnitude from lua's perspective.

To do this, we have to take ownership of any owned pointer from lua_unit.
We do this by not running lua_unit's destructor, but just overwriting the memory it's in.
Give lua_unit a put_map member function

This allows us to remove the destructor-avoidance hack in wesnoth.put_unit
and simplify the function's handing of various lua_unit types.
Hang Out MAI: bug fix in best move selection

In rare cases (when the unit has no hexes to move to, not even the one
it is on because it is in a zone to be avoided), this would cause an
error and crash the AI.
ai_helper: make AI move error messages more descriptive
simulate_combat_fake(): don't fill empty HP chances with zeros

That’s what wesnoth.simulate_combat() does, but is different from the
other functions in battle_calcs.  Only hp_chance[0] needs to be set,
even if it is zero.
attack_combo_stats(): also cache intermediate battle outcomes

Speeds up some calculations significantly.
battle_calcs: do not use variance of attack in attack rating

This was an idea we tried so that we’d start with the most uncertain
attack first, but it did not work very well.
Keep the code for now, just comment it out.
battle_calcs.attack_rating(): overhaul attack rating system

This was long overdue.  The return value is now much closer to
something describing the actual gain/loss (roughly) in units of gold.
Merge branch 'lua_put_unit' (PR #158)