Revert "Refactor: Made linedef_s an opaque type, moved members to LineDef class"

This reverts commit 1b882f44e5afcbb2d91c2fc3def06c253db03b83.
Revert "libdeng2: Added function_cast for casting pointers to function pointers"

This reverts commit a1f69496f2464ec1c3c41215e463f1202774f7c9.
Re-committing previous commits as one

There was something odd going on with the api folder, so redoing the
changes:

* 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.