Fix compilation with MSVC 12+

Visual C++ wrongly always chooses the variadic template version of a function if there are variadic and non-variadic template versions:
https://connect.microsoft.com/VisualStudio/feedback/details/806150/vc-12-variadic-template-function-preferred-over-non-variadic-template-function

This affects at least Visual C++ 2013 RTM and Update 1, the November 2013 CTP and Visual C++ 14 CTP1.

This commit works around that bug by only enabling the variadic template version of is_weak_substitute and is_container for 2+ template arguments.