std smart pointers, type checking for Stack and LuaRef and adding free functions as members

These are various changes/additions I made based on my use cases:

std::/boost::shared_ptr and similar can be used as container via an additional trait (see the manual).

Stack and LuaRef have convenience functions to check for user defined types. I used this to circumvent the lack of overload support (specifically for constructors) by just taking the lua_State and then sorting out the parameter count and types manually which often requires checking if some lua object is of a specific, potentially custom, type.

Adding free functions as class members similar to the mechanism already present for properties. This allows adding dummy functions to do the aforementioned resolution of overloads without changing the C++ class itself. It also allows adding functions like __tostring __add etc. to types that need to be adapted without intrusion.

The changes are (mostly) documented in the Manual.html.

So far these changes worked for me but there might still be issues that just haven't come up in my use cases. Overall I think they are useful and shouldn't mess with backwards compatibility or performance if not used.