Require direct_initialize argument for variant construction

This commit adds a parameter to the variant constructor template for
in-place construction so that it requires at least two arguments:
direct_initialize and type_tag. This will help overload disambiguation
as the single parameter constructor template is now never confused with
other kind of constructors.
Allow conversion from type_tag to variant

Since commit c94910c, conversion from type_tag to variant had been
disabled to disambiguate overload resolution. Now that the in-place
constructor template takes at least two parameters, the converting
constructor template is no longer ambiguous with other constructors.
Add partial_common_result class template
Define invoke function body

The invoke function templates can now be actually called to perform the
INVOKE operation. They are moved to the sesh::common namespace out of
the implementation detail namespace. The noexcept specifications are now
correctly declared.
Use invoke to call callable objects

Member pointers are callable objects but cannot be called in normal
function call syntax.
Add is_nothrow_callable class template
Add variant::flat_map function
Delete variant constructor for impossible conversion

To help SFINAE.
Add variant::map function
Merge pull request #138 from magicant/refactor/variant

Refactoring on variant