Mimic an iterator for looping across MoveList

Seems more conventional.

No functional change.
Reduce countermoves less in LMR

Passed SPRT for both short TC 15+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 17724 W: 3756 L: 3598 D: 10370

And long TC 60+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 22672 W: 4232 L: 4011 D: 14429

bench: 4418832
Delay killers[] initialization

Most of the time we cut-off earlier, at captures, so this
results in useless work.

There is a small functionality change becuase 'ss' can change
from MovePicker c'tor to when killers are tried due, for
instance, to singular search.

bench: 4603795
Microptimize MoveList loop

Add MOVE_NONE at the tail, this allows to loop
across MoveList checking for *it != MOVE_NONE,
and because *it is used imediately after compiler
is able to reuse it.

With this small patch perft speed increased of 3%

And it is also a semplification !

No functional change.
Bunch of 3 small patches

This patch is the sum of:

- Grainsize of 4 instead of 8

- Removing "depth < DEPTH_ZERO"

- Change DEPTH_QS_RECAPTURES = -5 to -7

All the patches individually failed to pass SPRT but scored
around 50%.

Together they pass easily short TC:
LLR: 2.96 (-2.94,2.94)
Total: 4429 W: 964 L: 844 D: 2621

And with some difficult long TC of 60+0.05:
LLR: 2.95 (-2.94,2.94)
Total: 64133 W: 11968 L: 11532 D: 40633

bench: 4821467
More uniform tracing code

No functional change.
Re-add "Pawn Structure" UCI option

And reshuffle the code to not special case
this parameter.

No functional change.
Add Pawn Structure also to polyglot.ini

No functional change.
Shrink engine UCI name

Some GUI have problems with long names.

Reported by George Speight.

No functional change.
Passed pawn tuning

A small number of tests with simulated
annealing at 15s indicated these values
may be better

And this is verified at long 60+0.05 TC
LLR: 2.95 (-2.94,2.94)
Total: 40658 W: 7821 L: 7501 D: 25336

bench: 4931544
Assorted renaming in evaluation

And some reshuffle too.

No functional change.
Fix a crash when 'go' multiple times

Search is started after setting a position and
issuing UCI 'go' command. Then if we stop the search
and call 'go' again without setting a new position it
is assumed that the previous setup is preserved, but
this is not the case because what happens is that
SetupStates is reset to NULL, leading to a crash as
soon as RootPos.is_draw() is called because st->previous
is now stale.

UCI protocol is not very clear about requiring that a
position is setup always before launching a search,
so here we easy the life of GUI developers assuming
that the current state is preserved after returning
from a 'stop' command.

Bug reported by Gregor Cramer.

No functional change.
Fix search log when using skills

In case of we pick a sub-optimal move be
sure to print this, and not the best one
on seach log file.

Bug spotted by Guenther Demetz.

No functional change.
Fix a typo

No functional change.
Fix incorrect 'ss' pointer in early stop check

The exclusion search used to verify one move is much
better than other shall be called with 'ss' and not
'ss+1'

No functional change.
Use alpha instead of beta-1

It is more directly related to a fail-low.

No functional change.
Retire psq_delta()

No functional change.
Introduce operator~(Piece c)

Small syntactic sugar to reverse piece color.

No functional change.
More consistent 'piece' variable naming

No functional change.
Convert pieceSquareTable to 3 dimensions

No functional change.