Add APIs to determine if a lua_State is referenced from shared_ptrs.

A typical use could be to replace

    lua_close(L);

with

    if (luabind::is_state_unreferenced(L))
        lua_close(L);
    else
        luabind::set_state_unreferenced_callback(L, &lua_close);

References detectable in this way occur when a object is passed from Lua to a
C++ shared_ptr if the requested pointee type does not have a shared_from_this()
function and the C++ object stored in Lua is not stored in a shared pointer or
in a shared pointer to different type (e.g. to a more derived class).