Remove incorrect colon in /Fo argument. This fixes #15.
Search for .so, .dll and .dylib suffixes on the shared library. This should fix #16.
Add autoconf input
Add autoconf output (for easy distribution)
Update .gitignore
Update instructions to add ./configure
Add config.h for Windows users
Check for various PRNG functions
Use unordered_map instead of map.

Contributed by Wouter Vermaelen (@m9710797).
Replace #defines with inline functions or constants

IMHO makes it easier to see what is actually going on. And in this particular
case the code without macro's is even shorter than the original.
Replace pack_col() with transpose()

Profiling indicated that a lot of time was spend in the pack_col() function.
This function is always called 4 times (for all 4 columns). It turns out to be
cheaper to only once transpose the board (turn columns into rows) and then
extract 4 rows.

Conflicts:
	2048.cpp
Tweak insert_tile_rand() and initial_board()

This is a preparation for the next patch: that patch will add an optimized way
of counting the number of empty tiles on the board. Though that new routine
doesn't work on a completely empty board. Luckily that situation only occurs
before the game has actually started in the initial_board() function and that
one is very easy to rewrite (don't use insert_tile_rand() for the very first
tile).

This patch also makes a small tweak in insert_tile_rand(). Unless there's a
bug in the game logic, it can never happen that insert_tile_rand() is called
on a board without at least one empty position. So we can remove the check for
that.
Add new count_empty() function

This bit-hack turns out to be faster than the original way to count empty cells
in a board (was loop over 16 nibbles). Though it doesn't work on a completely
empty board. But the previous patch already made sure we don't need it anymore
for empty boards.
Optimize insert_tile_rand()

Though this function isn't called very often, so I doubt it has a measurable
impact on the total performance.

Also, the result of the draw_tile() function is now always (explicitly or
implicitly) converted to board_t. So we can as well immediately return a
board_t.
Replace powf(2, x) with (1 << x)
No need to memset() tables because they are fully overwritten
Store row_{left,right}_table in 16-bit

The tables row_left_table and row_right_table always contain values less than
0x10000, so it's possible to store them in 16-bit instead of 64-bit.

This reduces the size of each of these two tables from 512kB to 128kB. Combined
with some of the later patches in this series this has a positive effect on
memory cache efficiency.
Cleanup init_xxx_table() routines

Both init_move_tables() and init_score_tables() fill in tables which have
0x10000 entries. Both routines contain some common operations. It's possible
to merge both into one. (Of course this won't be noticable in the total
execution speed).

This also changes the API of the .so file. Though IMHO it's better to only
expose one init() function to better hide the internal implementation details.

Conflicts:
	2048.cpp
	2048.py
Tweak score_move_node()

Conflicts:
	2048.cpp
Small cleanup in get_max_rank()