Adding std::function functionality for easier interop, interop with regular C++ classes at C++/lua boundary

std::function is now obtainable from stack::get easily (simple conversion from sol::function). Preserves returns and type safety. Do not have a use case yet to also try making it work on stack::push, but will have to remember how to do that sometime when it comes up.

stack::get has also been modified to work better for user classes. It assumes it is stored as a userdata at the provided index.