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'