Add Main class
Create MoveGenerator only once
Simplify assertion
Refactor directions to Square
Fix currentMaxDepth initialization
Refactor stack to states
Refactor Board.BOARDSIZE to Square.LENGTH
Remove Board constructor from id
Fix Zobrist key initialization
Refactor move constants
Add Main class as entry point
Decouple protocol from internal models
Use pseudo legal moves for MoveGenerator test
Merge branch 'skeleton'
Cleanup code
Change threading logic
Refactor Board to Position
Cleanup save/restore state
Refactor Castling
Refactor SIZE and LENGTH