Disable conversion from TypeTag to Variant

Previously, Variant<int, TypeTag<int>>(TypeTag<int>()) was constructing
a variant containing a TypeTag<int>. There was no way to direct
initialize a variant containing an int. After this commit, when the
first argument to a variant constructor is a type tag, it is always
treated as a tag specifying the type of the new contained value, rather
than an object from which the new contained value is copy-constructed.
Generalize Variant::emplace argument

The emplace function no longer inserts the type tag argument so that
callers can choose other kinds of construction.

The Emplacer helper class template is removed because emplacement with
copy/move constructor now can be done by the emplace function directly.