Remove redundant condition

After earlier patch this condition
becomes redundant and can be removed.

Spotted by Joona Kiiski.

No functional change.
Tune trapped rook

Passed STC
LLR: 2.96 (-2.94,2.94) [-1.50,4.50]
Total: 15687 W: 3352 L: 3199 D: 9136

and LTC (tested in 'parameters tweak' mode)
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 27983 W: 5046 L: 4797 D: 18140

bench: 7634225
Remove useless condition in time management

There is no reson to artificially limit the
pv_instability rule below a max depth.

Spotted by Uri Blass

bench: 7634225
Avoid 'double assigments' tricks

Bitboard init code is already noteasy to follow,
so don't make it even harder using 'smart' code.

Also reindent a while loop in standard way.

No functional change.
Retire FakeSplit

    - Currently broken
    - Never been really useful
    - Does not work well with new splitting model

Verified for no regression at STC with 3 threads:
LLR: 2.96 (-2.94,2.94) [-6.00,0.00]
Total: 81905 W: 12122 L: 12381 D: 57402

No functional change
Small reformat to Skill class

Steamline a bit the implementation of
skill levels. As a side effect we can
retire MultiPV global and use a local
variable instead.

No functional change.
Better document singularExtensionNode condition

Picked from official branch.

No functional change.
Small bonus for a blocked passed pawn

In case of a blocked passed pawn we don't give any
additional bonus, with this patch we grant a small
bonus if the blocking piece is our own.

Passed STC:
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 63965 W: 10950 L: 10692 D: 42323

and LTC:
LLR: 2.95 (-2.94,2.94) [0.00,6.00]
Total: 19237 W: 2740 L: 2562 D: 13935

bench: 7859671
Simplify evaluate_passed_pawns

From a suggestion by David Zar.

No functional change.
Outpost tuning

Double midgame bonus and halve
endgame bonus.

STC:
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 18142 W: 3094 L: 2948 D: 12100

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 83561 W: 11706 L: 11329 D: 60526

bench 8663544
Prefer names to numbers in evaluate_threats()

Also update some stale comment and remove one
indentation level while there.

No functional change.
Fix a warning with MSVC 2010

Warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

No functional change.
Aspiration: widen slower

STC:
LLR: -2.95 (-2.94,2.94) [0.00,4.00]
Total: 182323 W: 30664 L: 30234 D: 121425

LTC:
LLR: 3.51 (-2.94,2.94) [0.00,4.00]
Total: 59841 W: 8345 L: 8006 D: 43490

bench 7951701
Small code style reformatting

No functional change.
Ensure printing UCI info in multi-pv case

After commit 4336a59ed0e4385e61, in
case available root moves are less than
multiPV we could never reach condition:

PVIdx + 1 == multiPV

and as a consequence UCI output is not
printed.

Fixed suggested by Joerg Oster.

No functional change.
Reduce minimum memory requirement by 16MB

Stockfish allocates the default hash (32MB) in main(),
before entering UCI::loop(). If there is not enough memory,
the program will crash even before UCI::loop() is entered
and the GUI is given a change to specify a lower Hash value.

So leave the current design, but reduce the default hash to 16MB
instread of 32MB. In order to perform such quick searches (depth=13),
there is no reason to use so much Hash anyway. Another benefit is
to introduce a bit of hash pressure in bench, which increases chances
to detect rare bugs related to TT replacement, for example.

This is not a functional change, although it obviously changes the bench.

bench 8072446
Remove insufficient material rule

The eval already returns zero in KK, KBK, KNK (see material.cpp).
The difference is:

- we lose the "TB pruning" benefit of the
  draw rule (ie. search goes on even if eval is zero)

- we gain some speed by removing a useless test from the hot path

Tested in no-regression mode because is a simplification.

Stopped at 128K games at STC:
LLR: 0.05 (-2.94,2.94) [-3.00,1.00]
Total: 128000 W: 21357 L: 21560 D: 85083

But passed LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 33023 W: 4613 L: 4509 D: 23901

bench 8070261
Rename UCI 'divide' command to 'perft'

The main purpose of perft is to help debugging. But without the
breakdown in sum of perft(N-1), it is a completely useless debugging
tool. So perft now displays the breakdown, and divide is therefore
removed.

To allow speed tests output has been redirected to std::cout so that a

./stockfish perft 6 > /dev/null

will not be impacted by console printing overhead.

No functional change.
Rework perft implementation

Unify various perft functions and move all the code
to search.cpp.

Avoid perft implementation to be splitted between
benchmark.cpp (where it has no reason to be) and
search.cpp

No functional and no speed change (tested).
Move to_char() and to_string() to notation

Where they better belong.

Also, this removes '#include <string>' from types.h, which
reduces the amount of code to compile (every translation
unit includes types.h).

No functional change.