Added newReference() convenience method
Made operator= for LuaValue<->LuaValue more direct
Creating a new LuaReference doesn't pop anything
Added assertions to Lua reference code
Ensure nil references do not cause corruption

Lua's referenc implementation is very weak. If we store a nil value in a
reference, other references can obtain the reference id (represented
here by ref) and overwrite that value. This leads to corruption.

The solution here is still slightly weak. I use a numeric value to
represent nil values, as well as monitoring the type to ensure we don't
erroneously treat a real numeric value as nil. I believe the type()
checks will ensure we never treat a nil value as an integer or treat an
integer as a nil value.

The highest level of protection would be to use a table or function to
represent the nil, but there's no easy way to save that value in the
environment. This is because this class is so fundamental that it can't
use the LuaEnvironment or LuaStack.

Unfortunately, this means that we're stuck with this complexity.
Hide the fact that saving a Lua reference pops that value
Added a dump function for LuaStack
minor testing
minor whitespace
Actually use the pos argument when saving references
Use first returned argument as return value for LuaEnvironment's invocations
Improve dump a bit