Improve require order in piece classes
Draft castling specs
Add basic castling movement
Add validations to castling