New implementation for Variant::operator().

The new method takes an std::initializer_list<> as an argument, and as
such requires C++11-compliance. The method also takes the Variant
arguments by value rather than by reference, and copies them into the
argument array for the called function. This cannot be changed as
std::initializer_list cannot take hold a reference type (i.e. Variant&).