Fixed|libcommon|64-bit: Casts from integer to pointer

Use the INT2PTR() macro to make casts with the correct integer sizes.
Fixed|libcommon: Compiler warnings (unused parameters)
Refactor|libcommon: Switched all remaining sources dealing with save state IO to C++
Refactor|libdoom: Switched DOOM v1.9 save state interpreter/reader to C++
Refactor|libheretic: Switched Heretic v1.3 save state interpreter/reader to C++
SaveInfo|libcommon: Began transforming SaveInfo into a C++ class
Refactor|libcommon: Updated save state IO to use SaveInfo's C++ API, directly
Refactor|SaveInfo|libcommon: Group values comprising the saved ruleset for the game session
SaveInfo|libcommon: Encapsulate saveheader_t within SaveInfo
Refactor|SaveInfo|libcommon: Removed the old saveheader_t abstraction
libcommon: Cleanup
GameRuleset|libcommon: Added a (de)serialization mechanism

The save version was bumped to v14 as previous save state formats
interleaved the game rules with other game session configuration
info.
SaveInfo|libcommon: Cleanup
SaveInfo|libcommon: Use 0-based logical episode and map numbers natively

Also fixed a new regression with deserializing v.13 format info.
libcommon: Ensure game rule changes are fully applied when loading a savegame
libcommon: Cleanup
libcommon: Ensure game rule changes are fully applied when staring a new game
libcommon: Cleanup
libcommon: Removed cvar 'game-fastmonsters'

Enabling/disabling of fast monsters and/or projectiles must be done
via the game rule mechanism. Game rules are applied on server side
and communicated to the client when changed.

Game rule set management will soon be done through a new UI. As this
cvar has never worked correctly, we might as well dump it.
Fixed|GCC|All Games: Build and link errors

Corrected the definitions of various thinkers to be compatible with g++.
In short, one cannot define member functions into anonymous typedef'd
structs.

Also enabled the full C++ libdeng2 API for libheretic due to need for
de::function_cast<> in p_oldsvg.cpp.