factor out Lua.Run(); use debug.sethook to get preemption instead of signal