Add the ability to extract multiple return values when calling a C++ method

I've extended the CallMethod methods to return a tuple if (and only if)
strictly more than one return value is expected, and when none is
expected to just do nothing and return void.

There are of course the usual MSVC #ifdef deviations limiting this to 3
return values ATM, but if it ever becomes necessary it is easy to add
new ones as long as the compiler can't really handle variadic templates
(the way I'd want it to, anyway).
Merge remote-tracking branch 'laarmen/cpp_multret'
Hotfix unsigned constant underflow in variadic templates
auto-commit: translation updates
Implement most of the warning & performance points from my annual CppCheck run.
Most of these are functionally equivalent but are slightly more optimal, most are just a recommended way of doing things.
Fix an actual bug where we weren't checking against both registered joystick buttons.
Add a file (matrix3x3.h) I noticed wasn't in the VS solution.
fix gcc -Wold-style-cast warning
fix some gcc -Wreorder warnings
assert that we get a valid Root enum value in LuaFS ReadDirectory

An invalid value should be caught earlier on (by
LuaConstants::GetConstantFromArg)
auto-commit: translation updates
for fit some text in dialogue chat
title and crew name for crew contract on BBchat
fix changing position of the buttons during wage negotiations
Merge branch 'bigger_chatforms' closes #2856
minor doc formating fix in FlightLog
auto-commit: translation updates
Merge remote-tracking branch 'jpab/cppcheck'
auto-commit: translation updates
auto-commit: translation updates