I am now done with the pseudo-legal part of the move generation.
The generateMoves()-method in the Board-class now returns a vector with Moves that are possible in the position.
I am not completely satisfied with the castling and pawn move generation, but they work and are fast enough. I might go back and make the code a bit clearer in the future.
As posted below I have also changed the unmakeMove()-method to make it much faster.
Download the new files and take a look. As usual I added tons of comments for easy reading.
The next step will be adding a check for attacked squares that will be used to get a filter for legal moves.