This function supersedes cPlugin:Call(), is safer to use in regards to multithreading and once again removes the need for the cPlugin class being exported at all.
PushFunction(), CallFunction() and GetReturn() are not to be called independently, but rather only by using the Call() templated overrides.
Push() needs to be left in the public part, it is used for pushing results in the ManualBindings.
Preparation for #418.
This also marginally improves performance, since a strlen() isn't called (inside lua_pushstring()), the string length is stored in the AString object directly.