Fix leaking a Lua object when a managed Lua object wrapper is finalized without being disposed

Since the finalizer is run on a different thread, we can't simply call into
lua_unref and expect things to work (usually we will get a segfault), and since
the Lua class does not take any locks for performance reasons, we simply queue
up dead managed references and release them whenever DoString()/DoFile() are
called.

(I would like to release them more regularly instead, perhaps periodically using
lua_sethook() with LUA_MASKCOUNT, but right now we expose the ability to set a
hook to consumers of the Lua class; that will need to be reengineered to retain
that functionality while also allowing us to unref discarded managed objects at
regular intervals.)