userdata no longer needs to be kept around for its lifetime
can be discarded and lua VM will keep all necessary information
updated tests
fixed small error in state with new system
all tests passing GCC 4.9 std=c++11
Overloaded functions now work properly when types are specified in signature
this triggered overhaul of set_function/pusher<function_t>::push(...)
both state and table reflect changes to userdata structure to make it easier to use
tests updated to account for overload resolution
some function-related traits added to make use easier -- cleaned up archaic typenames in function_types.hpp
Account for std::reference_wrapper for objects -- sol now uses copy-by-default (value-semantics) for all functors
updated tests to reflect this