Introduced new bth_ReversiGame struct; utility function

While thinking about how I should implement the Minimax algorithm, I realized
that with the way things were implemented now, it would be the Minimax
function that would have to handle game transitions (changing the player to
move).

Obviously, that's not a very good idea, so I've added the bth_ReversiGame
struct and the bth_GameState enum and changed the logic in bth_put_piece
accordingly. Tests have been rewritten to reflect the change.

Also, I've changed all decimal constants (such as 4503599627378688ULL) have
been changed to hex constants (0x0010000000002000), which are a whole lot
easier to understand.

In reversi-util, I've added the bth_get_board_from_stdin() function, which
should be quite useful when writing tests. Rather than using bc or something
similar and doing 2^12+2^33+2^34+... and the like ad nauseam, you can simply
call the function from somewhere, type the board and let the machine do all
the boring work for you.