Vertexes are now internally C++ objects

Replaced GameMap vertexes with a MapObjectList<Vertex>.

Todo: DMU needs to be updated to work with de::MapObject rather than
runtime_mapdata_header_t.
Adjusted client/server headers for better decoupling
Sectors are now internally C++ objects
Allocate GameMap as a C++ instance

Constructor initializes everything to zero.
Removed the old runtime_mapdata_header_t from sector_s
Allocate vertices as C++ instances of Vertex in EditMap
Switched all use of vertex_s to Vertex (the C++ class)

Now vertex_s is free for merging into Vertex.
Made vertex_s an opaque type, Vertex now contains all the members

This completes the transformation of the Vertex type.

Todo: Update DMU accordingly.
Made sector_s an opaque type, Sector now contains all the members
Refactor: Made sidedef_s an opaque type, all members are now in SideDef

SideDef is now a C++ class.

Note: When updating DMU, the dummies need to be made C++ instances
as well.
Renamed de::MapObject to de::MapElement

"Element" is a more descriptive term (a building block or simpler
component out of which larger things can be composed of) than and has
no clashing meanings with existing code. It is also consistent with use
in basic data structures, e.g., array elements.
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.
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.
Merge branch 'master' into mapdata-c++
Relocated aabox and kdtree to libdeng1
Windows: Fixed build (and a handful of warnings)

Switched Windows-specific source files to .cpp, corrected system header
problems, fixed casting issues.
Resources|Windows: Updated use of abs() in hq2x