Align random number functions with C++ random number concepts
With the way that the vanilla RNG works it's a combination of a specific uniform random bit generator (a linear_congruential_engine using the Borland C++ constants) and one of two related near-uniform int distribution functions depending on the use case. Given we can use the engine from <random> I implemented the classes required to meet the RandomNumberDistribution concept for both distribution functions (at least far enough to compile in MSVC...)
This should hopefully allow code paths that require these exact engine and distribution functions to use their own generator instances instead of relying on global state. Opening this as a draft until I can find a good enough code path to use to show how it can be used for item generation...
Up to this commit the timedemo test passes, depending on how the global state is handled when generating items during dungeon generation and/or gameplay this will break.