GRIM: If ActorLookAt is called with an actor as the target, look towards the actor's head instead of their origin. Fixes #887
MISC: Add copyright notice from glm
MISC: Add copyright notice from glm
MISC: Add COPYING.MIT
EMI: Enable backface culling. Fixes #900
Merge pull request #921 from Akz-/emi-contract-fix

EMI: Enable backface culling. Fixes #900
Merge pull request #891 from Akz-/grim-lookat-fix

GRIM: If ActorLookAt is called with an actor as the target, look towards...
EMI: Use a hash map for joint lookup by name.
EMI: Move methods that require animation state information from AnimationEmi to AnimationStateEmi.
EMI: Store joint indexes to avoid joint lookup by name in each animation step.
MATH: More efficient matrix multiplication implementation for 3x3 and 4x4 matrix specializations.
EMI: Save and restore chore instance IDs.

Previously chore instance IDs stored as Lua userdata became invalid after
loading a save, because the chores were recreated with different IDs. This
caused certain opcodes like StopChore to fail.
EMI: Fix compatibility with older savegames.
Merge pull request #923 from Akz-/emi-anim-perf

EMI: Animation performance optimization
Merge pull request #911 from Akz-/emi-save-animation

EMI: Save/restore fixes
EMI: Implemented dynamic lighting for models.

Lighting is done by calculating vertex colors in software, since the attenuation model used in EMI cannot be simulated with OpenGL fixed function lighting. The original game does the lighting this way as well. Ideally for the modern shader-based renderer a shader would be used for this instead.
EMI: Only draw models for actors inside the view frustum.

This adds math classes for doing frustum culling in software. These could be used for optimizing performance in many other places as well. For example, if an actor is outside the view frustum, it may not be necessary to do expensive keyframe animation and vertex skinning calculations for that actor.
EMI: Implemented SetActorLighting.
EMI: Precompute the vector of enabled lights and the hasAmbient flag.
EMI: Avoid square root in light distance check.