Fix T37796, Mesh lost after exiting sculpt mode and undoing.

Issue here is that upon entering sculpt mode, the mesh (and the object
mode) is stored in global undo. Now made the code similar to edit mode,
but since we don't really have any operator to push, this is just
ignored for now.

I have tried just disabling the sculpt toggle operator undo flag but
this didn't work due to the nature recursive of the operator calls
BGE: Fixing some NavMesh memory leaks.
Fix T40172: LibFree() crashes with shared materials (e.g., from multiple LibNew() calls)
Fix for curve widget hue gradient drawing incorrectly when zooming
Fix T40187: Can't set single keyframe handle as Vector

ANIM_editkeyframes_refresh was testing handle selection as if those handles were transformed.

This is already handled by areas which need it,
so simply replace testhandles_fcurve -> calchandles_fcurve.

This was causing other bugs such as inserting a keyframe changing handles of unrelated fcurves.
FCurve: handle calculation was measuring new handle lengths and not using for new ratio
Fix for FCurve keyframe editing left handle from button failing if not selected
FCurve: stop generic rna update from changing curve handle type
Fix FCurve mirror ignoring aligned/free handles
FCurve: use submenus rather then popups from menus
FCurve: move add modifiers logic from menu into dynamic enum
Code cleanup: doxy comments
Dirty fix for memory corruption in the rigid body API.

Problem happens when removing a rigid body reference in a constraint,
and then jumping to the start frame right away. This will cause a full
rebuild of the rigid body world. However, the btRigidBodys are removed
before the constraints, and this leaves dangling pointers in the
btTypedConstraints, which causes corruption when deleting those
constraints later.

Fix for now is to explicitly delete constraints in advance when
rebuilding, while they still have valid btRigidBody pointers.

Ultimately the whole memory management and ownership of Bullet data
needs redesign. This is already happening in the particles_refactor
branch and could be ported to master separately:
https://developer.blender.org/diffusion/B/browse/particles_refactor/source/blender/blenkernel/intern/rigidbody.c
Fix T40191: Misleading TypeError message when registering CollectionProperty wtihout kwarg "type".

Turned up to be a cleanup of doc in that whole module...
Fix T40182: Crash when using KX_GameObject.rayCast/rayCastTo().

Missed another parent->release().
Fix T40199: bge.logic.LibFree() could cause crashes by leaving dangling pointers in the rasterizer.
Fix T40154: UI Multi-drag sets value beyond max
Disable auto-perspective by default, see T40153
Fix T40180: Space between letters adds space after last letter
Windows: Remove support for MSVC 2012 (VC11).

The officially supported compiled is now MSVC 2013, and MSVC 2008 will be faded out slowly over the coming weeks.