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.
Fix perft 1

Compute correct number of moves for this
corner case.

A smal bug crept in after recent perft rework.

No functional change.
Simplify idle_loop

Tested for no regression in SMP.

STC with 3 threads
LLR: 2.96 (-2.94,2.94) [-3.50,0.50]
Total: 52769 W: 7929 L: 7894 D: 36946

30 secs per game with 3 threads
LLR: 2.96 (-2.94,2.94) [-3.50,0.50]
Total: 57619 W: 7848 L: 7816 D: 41955

And STC with 7 threads
LLR: 2.96 (-2.94,2.94) [-6.00,0.00]
Total: 19901 W: 2789 L: 2772 D: 14340

No functional change.
Small tweak to idle_loop()

In case of a succesful late join we set again
'searching' flag, so we can restart search
immediately without an useless lock/unlock
cycle.

No functional change.
Retire "Write Search Log" UCI option

It is an unused feature and a bit redundant with the
GUI output that shows already the same info.

As a side benefit, apart fom big code reduction,
we don't have anymore a different bench number with
search log on or off (due to pretty_pv).

While there sync Makefile and 'contempt' UCI option
with upstream.

No functional change.