use lambdas and streams for some of the methods in Board
add guava, precompute neighbor sets, more lambdas