Make object's call_proxy dtor noexpect(false).
Clean up push_instance_metatable().

Do not create unused boolean field "__luabind_class".
Use lua_rawset() + lua_pushliteral() instead of the slower lua_setfield().
Use lua_createtable() with proper arguments instead of lua_newtable(): should
give better performance.
Use lua_pushcfunction() instead of lua_pushcclosure() with third argument set
to 0.
Do not unnecessarily clear the stack before calling lua_error().
Move Lua 5.1 compatibility defines to lua_include.hpp.
Add lua_raw{set,get}p for Lua 5.1.
Replace internal string keys with light userdata.

The internal string keys were those prefixed with "__luabind_" and the
"luabind.function" key.
This should be both safer and faster (using lua_raw{set,get}p()).
Replace detail::lua_reference with handle, removing the former.
Fix make_function<F>(lua_State*, F) overload.
Fix luabind::argument with relative indices.
Rewrite set_package_preload().

Loaders are now (wrapped) C++ functions instead of lua_CFunctions. They must
accept a single string (i.e. char const* or std::string) argument which is the
module name (the argument given to require()). lua_State* parameters are
handled as with def(), i.e. will receive the calling lua_State*.
Their return value is passed directly to the calling Lua searcher. This means
that package.loaded[modname] will be set to the return value and it will be
returned from require. If the function returns no value, it is treated as the
boolean value true.

Additionally, set_package_preload() now uses lua_pcall internally and throws
exceptions if it cannot set package.preload[modname].

test_package_preload has been adapted to the new interface and also tests that
the return value is handled correctly.
Replace lua_newtable with lua_createtable where appropriate.
test_user_defined_converter: Avoid MSVC x64 warning.