push multiple disparate arguments into lua

struct variadic_results : std::vector<object> { ... };

This type allows someone to prepare multiple returns before returning them into Lua. It derives from std::vector, so it can be used exactly like that, and objects can be added using the various constructors and functions relating to sol::object. You can see it and other return-type helpers in action here.