Forward argument to Variant::of correctly

The type parameter to the std::forward call in Variant::of was wrongly
decayed. It should be the exact type of the argument the of function
received for an l-value argument to be correctly forwarded.
Force contained types of Variant to be decayed

As required in the documentation comment for the Variant template type,
contained types of a variant must be decayed. This commit adds static
assertion so the compiler can check if they are actually decayed.
Add Variant::emplaceWithFallback method

The new method is used to implement the Maybe class template.
Remove compile-time requirements for variant emplace

Checking for the strong safety requirements of variable emplacement at
compile time seems too strict and causing compilation errors in many use
cases. Maybe we should loosen the compile time requirements and check
safety at runtime.

One of the overloads of VariantBase::emplace is removed in this commit
in favor of emplaceWithFallback.
Add Maybe template class
Merge pull request #19 from magicant/feature/maybe

Fix bugs in Variant and add Maybe