Pass by const reference for primitive & container types

Added specializations of Stack<T> to support passing primitive
types and container types by const reference in addition to
passing them by value without triggering asserts at run time.
Added LuaRef_cast for convenience

usage:
LuaRef val;
...
int i = LuaRef_cast<int>(val);

to mimic the syntax of c++ cast operators
Added tostring member to LuaRef

LuaRef::tostring uses the tostring function in lua
LuaRef::print has been changed to also print the
tostring result to more closely mimic the behavior
of the print function in lua.
Fix whitespace and style