Allow use of make_recursive_variant with std::tuple

Per http://stackoverflow.com/questions/22963967/using-boostmake-recursive-variant-with-tuple make_recursive_variant breaks with variadic class templates e.g. std::tuple.  Add a specialization of boost::detail::variant::substitute to handle variadic class templates, and test.