More VC++ compatibility, some features, and some warning supression for GCC.

This should work out nicely, and adds some decent flexibility to things that should be callable (I held back from doing it on `sol::object`! I hope you're happy. D:<)