Introduce FunctionalInitialize for Variant

The variant object constructor that initializes the object from a
function call result now takes a FunctionalInitialize dummy object so
that it is no longer considered as a converting constructor.
Enable implicit conversion from value to variant
Remove Variant::of function

Now that the variant type is implicitly convertible from its value type,
the "of" static member function is no longer needed.

This commit removes unnecessary uses of the "create" function as well.
Merge pull request #85 from magicant/refactor/variant

Refactoring in variant implementation