Slight reordering in PuzzleManager
Implement shift+arrow and PuzzleManager.moveToFarthestValidCellInDirection
Implement home/end