Add method BoardGraph::get_neighbours

Method returns all nodes which are adjacent to the specified one.

Note:
Each neighbour is adding twice to the result list, so result list
is of type std::set.
Add method Game::possible_moves

Method returns list of nodes to where specified pawn can walk and list
of walls which can be placed on the board.
Add method WallGrid::possible_walls

Method returns empty list yet.
Create draft of player with AI
Register MiddlingPlayer in PlayerFactory
Implement minimax draft
Fix minimax algorithm for MiddlingPlayer

Note: MiddlingPlayer does _not_ use minimax algorithm yet.
Increase pawn type selector height
Use minimax algorithm result to choose move

Also fix a lot of bugs.
Rename few vars in minimax algorithm
Print number of analyzed nodes by minimax
Use alpha-beta pruning
Set beta value when opponent wins
Implement WallGrid::possible_walls

This method is highly ineffective but does its work.
Change signature of Game::possible_moves

Method now returns std::vector<IMove*> with all reachable nodes and all
possible walls.
Analyze wall moves in minimax
Reduce look-forward value
Check add_wall result
Add game tests
Fix issue #13: pawn can move through the wall