MSVC needs explicit overloads and explicit =default operators on `sol::function`. It's quite whacky, really. Anyway, it compiles, so let's just make sure this works for GCC too.
Forgot a private on table.
EnableIf and DisableIf back in place, type trait fixed for MSVC. Bleh, this is a lot of work. Removed `functional` header, because nobody's using it.
Merge pull request #7 from ThePhD/master

VC++ Compatibility