Part 26: std::bitset

Part 26 refactors our core game representation! We replace the unsigned char* implementation with std::bitset for our game elements, making the code much more readable and maintainable while keeping the same efficient bitboard approach.