Remember if the 'computer' command was received from the GUI, and use
this info when setting the UCI_Opponent option to distinguish 'human'
and 'computer' as first word, instead of the uniformative 'none'.
The implemntation assumes 'computer' would be sent before 'name', which
XBoard does (but the CECP specs do not guarantee).

The UCI_Opponent option is now recognized, and its option feature is
suppressed. Instead its presence is remembered, and will lead to its
setting on reception of a CECP 'name' command. The feature name=1
is emitted at startuptosolicitsuch a command.

For USI FENs have to be translated to SFEN by putting the holdings
after the side-to-move indicator. This was done for any FEN that specified
holdings (probably to accomodate the Seirawan Chess version of Komodo).
But in Crazyhouse for Stockfish this wrecks things. The announcement
of a UCI_Variant option now suppresses this transformation.

A UCI combo option UCI_Variant is now recognized as special, and translated
to 'feature variant=...' rather than 'feature option="UCI_Variant ..."'.
The CECP 'variant' command now leads to setting of this option, while on
the 'new' command the option is reset to 'chess'.
The variant names are transmitted as given, except for 'chess',
which is traslated to 'normal', and 'threecheck' (CECP: 3check).

The manual page is updated with
- mentioning of the Arena960 dialect and -f flag to trigger it
- discussion of byoyomi TC, and the options to force it
- replacing the defunct USI specs URL by a valid one on my own website

The USI 'gameover' command is now used as translation of the CECP
'result' command, to relay the result to the engine. To decide how
the absolute game result (white/black) is translated to a relative one
(win/lose), the side last moved for is used as indication, and remembered
whenever the engine is set thinking on a move (as it could already be
switched to force mode at the time the 'result' command is received).

In USI (-s) mode, UCI2WB now announces an option Byoyomi, which can
be used to define a hard byoyomi when the the option Floating Byoyomi
is off. Setting it to N is equivalent to a third argument " byoyomi N".
With N < 0 the option is switched off.

In USI (-s) mode an option 'Floating Byoyomi' will be announced, which
will force the 'suffix' to the 'go' command to specify a byoyomi equal
to a reasonable time to think (timeLeft/40 + inc). This can be used as
a work-around to let engines that ignore the time left and always think
they are playing in byoyomi (a common misery in USI engines) work reasonably
well under incrementalor sudden-death TC. This then removes the need to
specify the suffix on the UCI2WB command line.

The suffix to the 'go' command is now declared as array rather than
pointer, so that it can be easily printed in. (Before it could be made
to point to argv[3] if needed, and be NULL otherwise, but we want to
add some options that would create a suffix dynamically.)

By default thinking time and nodecount were set to 0, but this made
XBoard interpret Thinking Output with score 0 as an info string, which
was undesirable. So the node count is now 1 by default, while the time
could be measured by UCI2WB itself (as it was already recoding startTime
of all searches).

If an engine issues an "id version" command when an "id name" was already
received, a new 'myname' feature is emitted that contains both name and
version number. This is supposed to overrule the bare name in the myname
feature emitted because of the "id name" command.

Any check-type option containing the substring "960" or "frc" in their
name will be set automatically when UCI2WB is run with the -f option.
They will also be reported to the GUI, but always as having default
setting 'true', no matter what their original default setting was,
to reflect the new reality. So the potential damage this heuristic can
do is limited to altereing the default.

AIf an engine annunces an option UCI_Chess960 UCI2WB will report to
the GUI it supports variant fischerandom. In addition it will request
the GUI to encode castling moves as KxR through feature oocastle=0.
A flag argument -f will make UCI2WB support FRC even when the engine
does not have the option. In that case the GUI is set to deliver castling
moves as O-O[-O] (feature oocastle=1), and any castling field in a
received FEN will be overwritten with KQkq. (This is the obsolete
'Arena standard' for FRC.)

The blocking of input during thinking did break pondering, as a ponder
miss also used pause = 2 to schedule ignoring of the 'bestmove' reply
to 'stop'. This now uses pause = 1 again, while after a ponder hit the
input thread is blocked after turning pause into 2, indicating the
'bestmove' is for real.

When engines, in violation of UCI specs, moved during ponder without
waiting for 'stop' or 'ponderhit', UCI2WB would pass their move out
of turn to the GUI, and hang when the opponent would move, waiting
for an engine move that had already come. We now ignore such a
premature ending of the ponder search, like no ponder search was
made at all. And we give an error message in the engine output.

The main framework of UCCI now works, and is activated by the option -x :
We send 'ucci' and expect 'ucciok', the alternative keywords for timing
are used (time and opptime, increment and oppincrement), and 'name'
and 'value' are suppressed when setting options. 'name' is also not
mandatory anymore in the received 'option' commands. The position-moves
command starts with the FEN for after the latest capture, and now
has the 'position' keyword that was missing in Cyclone UCI.

A Xiangqi board is added, with code to set it up from a FEN, convert it
to the board part of a FEN, and apply the moves from the move list to it,
keeping track of what was the last capture. The FEN for setting it up
is always taken from the "fen <FEN>" position command ('iniPos') of the
Cyclone dialect used in variant xiangqi.

A file DefectiveEngineOptions.ini will be read as if it is engine output
before any real engine output. This can be used to fake UCI 'option' commands
that the engine fails to announce, so that they will appear in the GUI's
Engine Settings dialog, and can be changed by user or GUI.

There was an inconsistency in starting ponder searches, because they occur
with the opposite side-to-move, or thus exchange wtime and btime. This was
solved in the old version by changing stm only after starting the ponder
search in response to an engine move. But for starting through 'hard'
there is no turn change. So the start routine has to swap the times by
itself, and the turn change was moved to before it to compensate.

Rather than just setting the flag that causes a ponder search to start
after the engine moves, we start the search on receiving the 'hard' command.
When a ponder search is in progress, it is stopped on receiving 'easy'.
This requires saving a ponder move even with ponder off, (because it might
be switched on later), and more strict clearing of the move beyond the last
one, toprevent it can be accidentally used as ponder move (e.g. after undo).

UCI2WB collects moves sent by the engne in analysis mode from the currmove,
currmovenumber info commands. After the full set for the current position
has been completed, UCI2Wb becomes sensitive for WB include and exclude
commands, to switch the moves in the list on or off. If not all moves
are on, the 'go infinite' will be accompanied by 'searchmoves'. If all
moves are off, the current search is allowed to continue.

WinBoard does not apply a feature timeout when restarting an engine that
had reuse=0, but immediately starts sending commands. This caused the
memory command to be ignored, because it arrived when UCI2WB had not seen
the engine's Hash option yet. Now UCI2WB stalls processing GUI commands
after receiving 'protover' until it sees 'uciok' from the engine.

Like in Shogi FEN, UCI S-Chess engines have the holdings not immediately
behind the board, but before the move counters. Since Shogi FENs are
missing a few fields in this area (castling, e.p. and 50-move), some
recoding was necessary to make this work.

The only existing UCI S-Chess engine requires the gating square to be
repeated after the gating piece suffix. Also gating-at-Rook castlings
have a different format: they mention the King move. UCI2WB now handles
these move translations.

Not all debug prints towards the GUI were controlled through the
"UCI2WB debug output" option. This is now repaired. The method for
matching an info string is made a bit more efficient, by only looking
at the beginning.

The debug output sent by UCI2WB to the GUI is made subject to an option
"UCI2WB debug output", which by default is set to false. A command-line
argument "debug" can set it to true from the beginning, so that you will
also be able to see the option handshaking.