Implemented the utility function
Wrote the constructor of the Zobrist Hashing
Added basic Zobrist Hashing code for non top-left changing moves
Extracted the randomness to make it unit testable
Added basic unit test which tests the constructor
Remade the Zobrist layout to be possible with the shifting board
Added unit tests for Zobrist Hashing
Started with the extension
Merge branch 'master' into zobrist

Conflicts:
	Engine/AIExtension.cpp
	Engine/Engine.vcxproj.filters
Added Contains function to TranspositionTable
Started the base code for the Transposition Table extension for the AI
Rewrote sections of the Transposition table, created integration with
basic TranspositionExtension
Added code to make using the Zobrist AI possible and default
Merge branch 'master' into zobrist

Conflicts:
	Engine.Wrapper/KaroGame.cpp
	Engine/Engine.vcxproj
Merge branch 'bugfix_40' into zobrist

Conflicts:
	Engine.Wrapper/KaroGame.cpp
Changed the AI to be the Zobrist AI
Added nullptr checks on the transposition information
Made TranspositionTable persistant over multiple bestMove calls
Removed double code, we don't calculate moves for min, why keep them?
Improved the Zobrist hashing extension, It now acts like a move ordering