New make target check

Just a smoke test so far, extracted from src/scripts/nightly/.  This
makes the existing smoke test more easily accessible.  Noteworthy
differences:

* Instead of patching the code to make output more stable, postprocess
  the output to normalize it.

* Compare actual results to expected results instead of the previous
  test run's results.

* Much faster.  The old test harness used long sleeps liberally to
  "ensure" things always happen in the same order.

Shortcomings:

* The smoke test hangs when the server fails to complete startup, or
  fails to terminate.

* Normalization of xdump hardcodes columns instead of getting them
  from xdump meta.

* Normalization of time values in xdump is an ugly hack.

* Currently expected to work only with thread package LWP and a
  random() that behaves exactly the one on my development system,
  because:

  - Thread scheduling is reliably deterministic only with LWP

  - The PRN sequence produced by random() isn't portable

  - Shell builtin kill appears not to do the job in MinGW

  - The Windows server tries to run as service when -d isn't
    specified

Further work is needed to address these shortcomings.

Instead of updating src/scripts/nightly/ to use "make check", retire
it.  It hasn't been used in quite a while.  Investing more into our
homegrown auto-builder doesn't make sense, as canned auto-builders
such as Travis CI and Jenkins are readily available.

The shell scripts src/scripts/nightly/tests/?? become Empire batch
files tests/smoke/.  The shell scripts are actually shell boilerplate
around Empire batch files.  To make sure git recognizes the move, this
commit moves them unchanged.  tests/smoke-test strips the boilerplate
before it feeds the batch files to the client.  The next commit will
get rid fo that.
Get rid of shell boilerplate in smoke test Empire batch files
Make smoke test check the final empdump -x
Factor tests/test-common.sh out of tests/smoke-test

For reuse by future tests.
Add files test to make check
Add fairland test to make check
Remove fairland from smoke test

Import xdump instead.  To decouple the smoke test from future fairland
changes that result in different worlds.
Make smoke test's plane build more robust

The airfield is a sector taken from player 8.  How many updates it
takes to convert is highly variable.  If it converts late, the
airfield may not be constructed in time.  This is currently the case
for me.

Move the airfield to a more dependable sector.

For me, the smoke test now fails frequently, because of differences in
news.  To be fixed next.
Make news item merging deterministic and safe for year 2038

News reporting merges news items into recent items with same contents.
For that purpuse, we keep a small cache of recent items.  When a new
item can't be merged into an item in the cache, the oldest item gets
evicted to make space for the new one.

ncache() evicts the first item with the smallest timestamp (struct
nwsstr member nws_when).  Timestamps are in seconds, therefore clashes
are common, and eviction depends on exact timing.  Such indeterminism
can make the smoke test fail.

Moreover, ncache() assumes timestamps cannot exceed 0x7fffffff.  If
they do, it always evicts the slot 0.  They will in 2038.

Fix by evicting round robin.  This always evicts the oldest item.
Enlarge news cache from 5 to 8 entries per country
Limit che action in smoke test some

Too easily upset by random variations.  Kill them off with anti after
two updates.
Clean up launch_sat() random direction pick

Use DIR_FIRST rather than literal 1.
Clean up and document nuclear damage's chance to destroy nuke

Change chance in percent from damage-1 to damage.  It's always been
damage-1, but I can't bring myself to document the silly -1.
Clean up land unit retreat chance and fix its documentation

Change chance in percent lnd_retreat - lnd_effic - 1 to lnd_retreat -
lnd_effic.  It's been that way since Empire 2, but I can't bring
myself to document the silly -1.

"info morale" wasn't updated when the retreat chance was changed in
Empire 2.  Fix that.
Fix prod_eff() function comment

It returns product's level p.e. time sector type p.e, not just the
level p.e.  See "info Products".
Move declarations for chance.c to new chance.h
Encapsulate direct use of random(), srandom() in chance.c

Wrap roll0() around random(), and seed_prng() around srandom().  In
preparation of replacing the PRNG.
Fairland's rnd() wrapper is trivial now, drop it
Replace "roll0(N) + M" by "roll(N) + M-1"
Fix "info Damage" for shells, depth charges and torpedoes

Each random() is off by one there.