auto-commit: translation updates
specialise LuaObject<SystemPath>::PushToLua to cache SystemPath objects

This is done to ensure that two equivalent SystemPath objects will in fact
refer to the same Lua userdata instance. That allows SystemPaths to be
used as keys in Lua tables, which is very useful.
now that Lua SystemPath instances are all interned, they don't need __eq

The default userdata equality should now work correctly, because two
SystemPath values will be the same instance iff they have the same data.
make SystemPath 'final' to prevent accidents
extract the Lua SystemPath blob code to keep it with the rest of SystemPath

This should make it easier to maintain because it puts the memcpy code
that requires detailed knowledge of the content of a SystemPath together
with the rest of the SystemPath implementation.
(One of the most basic tenets of writing maintainable code, so really I
should have done it this way *first*)
auto-commit: translation updates
Merge remote-tracking branch 'johnbartholomew/deduplicate-lua-systempath'
auto-commit: translation updates
vs2013 et al don't support constexpr
remove the constexpr stuff entirely
Merge remote-tracking branch 'fluffy/no_constexpr'
auto-commit: translation updates
auto-commit: translation updates
Some defensive coding to guard against divide by zero and other possible issues.
Change to use the correct functions to test
Invert the test, my mistake on previous commit.
return the relative position instead of the absolute.
normalise output of early-return path in AIGetLeadDir
Merge branch 'AIGetLeadDir'