Template-ize CallFunctionVoid.
Changes CallFunction parameter order to make template parameter deduction with
variadic parameters work nicely.
Note that the JS->C++ function calling code is not touched as doing that nicely requires at least some C++14 features (that could be implemented relatively easily, but then the code does not get any easier to read). The rough strategy would be to add a helper function that builds a tuple element-by-element and forwards it to the next helper (that has fewer parameters to handle), or aborts the whole chain. The last helper then calls the function with the unpacked tuple (C++14 to do this nicely without reinventing the wheel) (calling could be done by std::apply but that's C++17). So this part is explicitly not within the scope of this change.
This diff does however clean up the macro/template mess we do have here and makes it a quite readable IMO. This also reduces reliance on SCRIPT_INTERFACE_MAX_ARGS.