Handle dependancies automagically

From a clean state, ninja will compile and link everything, obviously.

But after that, only the files that need recompiling will be recompiled:
- if a single source file is modified, only this file is recompiled.
- if a header file is modified, only the source files that #include it (directly
or recursively) will be recompiled.

Also:
- pretty print progress info like "Compiling search.cpp" or "Linking stockfish",
instead of the actual commands.
- strip the executable after linking.

Note that there is no clean rule like in a typical Makefile. This is achieved by
using a built-in rule: ninja -t clean. Ninja knows what needs to be cleaned.

No functional change.
Move build.ninja where it belongs

No functional change.
configure.py