Small refactoring of Piece and Square Class

First patchset is concerned with the refactoring of the Piece class, which includes extracting movement methods from the genLegalDests(Board board) method. This way the cyclomatic complexity, number of paths and length metrics of the method get significantly reduced.

Second patchset is concerned with the elimination of duplicated code found in two methods of the Square Class. This was done by combining the two similar methods into a single one and adding a parameter to differentiate between them.