libdeng2: Added function_cast for casting pointers to function pointers
Refactor: Made linedef_s an opaque type, moved members to LineDef class

This warranted switching almost all engine sources to .cpp.

Also sorted out headers for successfully compiling game plugins.