Added ContainerConstructionTraits for generalized Container support

The introduction of an additional trait allows to specify how to obtain
a container from a raw pointer which allows types that provide that
functionality for shared_ptr via shared_from_this to be managed by a
shared_ptr.
Added Stack::is_a

The is_a function provides an equivalent to the
lua_isnumber, lua_isstring etc. functions for registered
custom types.
Allow free functions as member functions

Added the functionality to use free functions with a fitting
first parameter as member functions.
Added ::is<T> member function to LuaRef

for consistency with the Stack::is_a function
a is<T> member function has also be added to
LuaRef to check for custom types.
Updated Manual

The manual now also mentions the possibility of
adding free functions with a "this argument" to
classes.
fixed absolute index in LuaRef::tostring

the tostring function was using a absolute index
instead of -1 which lead to the wrong value being
read to a string and potentially resulting in a
exception when assigning NULL to std::string.
fixed stack unbalancing in Userdata::checkClass

There was a case where the checkClass (used by Stack::is_a
and LuaRef::is) would unbalance the stack.
checking for custom types returns false on nil
Merge branch 'progschj'
Per access container getPointer and exception catching

When calling into C++, exceptions are caught and translated into Lua
errors.

A containers' get pointer function is called on each access rather than
only when the UserdataShared is created.  This allows any code in the
container that checks pointer validitly to work.