Reduce size of heur_score_table[] and score_table[]

Both these tables had 65536 entries and each entry took 32-bit. Though
heur_score_table[] and score_table[] only contained respectively 23
and 2875 unique values. We can save quite some memory by storing an
index (index is 8-bit or 16-bit) to a 2nd table that contains the full
32-bit value.

Before the combined size of the 2 tables was 512kB. Now the combined size of
all 4 tables is a bit over 200kB. This is another trade-off between memory size
versus extra calculations. In my experiments this change gave a speedup of
about 5%. Likely because now more useful data fits in the CPU memory cache.
Small tweak in score_heur_board()

Constant term can be incorporated in the heur_score[] table.
Experiment: unroll move-loop in score_move_node

Goal is to eventually get rid of the execute_move(int move) function.
Changed find_best_move() -> do_best_move()

Before this patch the main loop looked (very roughly) like this:
  0) are there still legal moves?
  1) find best move
  1b) did step 1 really find a move?
  2) execute that move
  2b) was step 2 really a valid move?
But internally step 1 already executes that move, so the work in step 2 is
redundant. This patch changes step 1 to instead of the move (up, down, left,
right) return the resulting board of the move.

There were also a lot of redundant checks for valid moves. Step 0, 1b and 2b
are now collapsed into a single check.

This patch changes the interface of some of the exported functions. So it very
likely breaks the python bindings. I'm sure it's possible to update the python
stuff, but (for now) I didn't bother. Also the ask_for_move() function is
broken now (but can easily be fixed), but again I didn't do this.

@Robert Xiao:
The original game-loop was a more natural fit for interactivly playing the game
and likely also to automatically controlling a web-based game. This new code is
(only) better suited to quickly solve the game. So feel free to drop this patch
when integrating this branch into yours.
Remove (now) unused stuff

The previous patch broke the python stuff. This patch removes it completely.
Having a separate 2048.h header is now also no longer useful.
Get rid of execute_move(int move)

score_toplevel_move() was the only remaining user of execute_move().
Remaining cleanups

- Use c++ style #include files.
- Don't use 'inline', modern compilers are generally much better than humans
  at deciding what (not) to inline.
- Small remaining coding style changes.