possible_moves is now not every time new created, instead the flag
possible_moves_is_null is set true, if for the actual position
possible_moves is not calculated + some minor optimizations