Implement pawn promotion, fix bug with _in_check?
castling and pawn promotion works
hardens Board#can_castle to ensure a checked king cannot castle