Allow registration of classes and functions using an object

This allows use of module() without pollution of the global environment, e.g.

local mylib = require("mylib")

extern "C" int luaopen_mylib(lua_State* L)
{
    using namespace luaponte;

    object mylib = newtable(L);

    module(mylib)
    [
        …
    ];

    mylib.push(L);

    return 1;
}

Conflicts:
	luaponte/scope.hpp
	src/scope.cpp
Improve test_virtual_inheritance.

Access members instead of nonvirtual functions.

Do everything really twice instead of calling assert() twice with the same
boolean value.
Remove unused/senseless structs base_desc and base_info.

luabind::detail::class_base::base_desc was never used (what looks like usage is
actually just a 'typedef std::pair<type_id, cast_function> base_desc'.

For luabind::detail::class_rep::base_info only the base member was used. The
pointer_offset member was only assigned to 0 (sometimes it was also left
uninitialized). Use class_rep* directly instead of base_info.
Do not store unused cast functions.

In luabind::detail::class_base::m_registration::m_bases (where m_registration
is a luabind::detail::class_registration). m_bases was a mutable
std::vector<base_desc> (base_desc was a typedef on
std::pair<type_id, cast_function>) and is now simply a std::vector<type_id>.
call_function: Fix with destructor default noexcept.

The call_function<R>() functions return a proxy object to allow applying
policies and do the actual call in the destructor if no policies were applied
and the return value was not used. Thus, the destructors might throw
luabind::error exceptions and need to be marked as noexcept(false).

This caused test_free_functions and test_lua_classes to fail with
std::terminate().
Fix enum converter again (g++ and/or  C++03).

The Lua -> C++ overload of apply() was outside the #ifdef. Fix: Cast to
underlying_type -> enum if std::underlying_type is available (i.e. C++11), cast
simply to int -> enum otherwise (MSVC failed compiling when removing the
intermediate cast to integer type, while g++ did not even warn).

The 'typename' keyword was missing in the C++11 version of the C++ -> Lua
apply() overload. Sadly, MSVC ignores this while g++, standard conformant,
issues an error.
Make test_typetraits compile separately.

There already was a test_main() defined (although with wrong return value).
Build: g++: enable warnings and request C++11 if available.
Avoid warnings on g++.

The most nasty one was -Wshadow because luabind had lots of construtors of the
form

    Class::Class(int value): value(value) { }

g++ would complain about the parameter value shadowing the data member with
the same name. Fix in most cases by appending an underscore "_" to the
parameter. In some cases, for lua_State* arguments, rename interpreter to L.
In other cases, if the offending data members are private, rename it by adding
an 'm_' prefix.

-Wmissing-declarations was also more than annoying, being issued a lot in the
tests. Resolve by putting everything in anonymous namespaces or making the
functions static. This also solved a few more -Wshadow warnings for the
name 'Base'. The warning also complainded about the test_main() functions. Fix
by moving the declaration from test/main.cpp to test/test.hpp.

Fix -Wold-style-cast. Most of the time static_cast was enough.

Fix -Wredundant-decls. Actually the most useful warning.

Probably others.