Delegate responsibility for generating random squares

Move method generateRandomSquaresForPieces from ChessPosition to new
class RandomSquareGenerator
Remove restrictions for White King

The restrictions are only necessary if chess position is canonical.
Add constants to enum
Add method containsPawns()
Add static factory method createDeepCopy(ChessPosition)
Change type of parameter newPiecesWithSquares to BiMap<...>
Add method getAllPieces()
Add methods isBelowDiagonal_A1_H8() and isAboveDiagonal_A1_H8()
Add method isDuplicate()
Modify constructor