Optimized castle move generation
Optimized pawn move generation
Reduced the size of ApplyMove