Don't log threads initialization
Don't put file descriptor values in thread names

The names are logged.  Loging file descriptor values gets in the way
of regression testing, such as the smoke test that'll be committed
shortly.
New make target check WIP

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.  There's still one
  short sleep left in the new one, and that's marked as a bug to be
  fixed later.

Shortcomings:

* The smoke test produces no output even when it fails.  Makes
  failures unnecessary cumbersome to investigate.

* The smoke test hangs when the server crashes on startup.

* The smoke test uses sleep to "wait" for the server to close its end
  of the connection.  Racy.

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

* Currently expected to work only under 64 bit Linux, because:

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

  - Encoding of xdump product selector nrndx 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

  - The Windows server xdumps floating-point zero with seven
    significant digits instead of six

  - Thread scheduling is deterministic only with LWP

Further work is needed to address these shortcomings.
TODO squash some in

Instead of updating src/scripts/nightly/ to use "make check", retire
it.  It hasn't been used in quite a while.  Investing further into our
homegrown auto-builder doesn't make sense, as canned auto-builders
such as 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
Normalize away nrndx values in test output

Their encoding depends on the host, see resources[].  Too clever by
half; perhaps we should change it.  For now, just map them all to
zero, to make the smoke test portable.
Make smoke test check the final empdump -x
Normalize Windows floating-point zero in xdump test output
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