Refactor|libcommon|GameRuleset: Began remodeling GameRuleset into a C++ class

A C wrapper API for accessing rule values is necessary because it is
not presently feasible to switch all the relevant source files to C++
due to the large amount of C-isms also present. All source files which
need write access to the game rules are now in C++, however.

Todo: Fix new compiler warnings output by GCC/clang since this latest
batch of C++ switches.