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.
make unit tests run headlessly

specifying --unit is essentially ||'d in at all places where --nogui would be
add WML macros for unit test scenarios

contains "generic_unit_test", "return" and "assert" macros
add unit test examples

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

these test a basic property of events, and 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.
unit test timeouts: first attempt
correct thread model for unit test timeouts

it seems that child threads cant terminate the whole process,
so we need to put the work in a worker thread and make the
main thread the timer / return thread.
fix whitespace
add replay validation to unit tests

we save an automatic replay, then load it and try to play it.
this is the initial attempt.