Allow overriding of script functions in GScriptDataHolder

Before this change, it was not possible to instantiate a script object from a C++ object and override the same method twice. Added unit tests and confirmed they pass with Lua bindings.