C++11 support

This pull request include the means of migrating Open Notrium to C++11. Hopefully after this is merged, we may do things nicer than before.

Nearly everything is backwards compatible. `isnan` is an exception, where it now is defined as the function `std::isnan` in `<cmath>`. Before C++11, the compiler would probably have `isnan` or `_isnan` as macros or functions. I have included `<cmath>` where this function was being used, in hope that all C++11-compliant compilers will find it.

One of the nicest things we can do with C++11 in WinMain.cpp is to create references to objects of an invisible type. For instance, WinMain.cpp:17186 has some ugly and long lines of code, having to write the full member path in order to access `mod.polygons[mod.general_objects[object->type].collision_parameter0].points` or `object_size*mod.general_objects[object->type].collision_parameter1`. The first reaction to simplifying this code is aliasing it with a reference type. However, there are two problems:

- If the object we're trying to alias is of an invisible type, then we cannot create the reference without changing the visibility of the type.
- Even if it isn't, what's its type? Sometimes it's pretty damn hard to figure out, especially without an IDE.

With C++11, we can use the auto keyword: `auto& points = mod.polygons[mod.general_objects[object->type].collision_parameter0].points;`