Declare FileDescriptor swapper in sesh::os::io

The swap function should be declared in the same namespace as the
swapped objects' type to enable argument-dependent name lookup.
Fix Variant::swap noexcept specification
Remove std::swap<Buffer::ConstIterator>

Specializing std::swap is not recommended because it cannot be found in
argument-dependent name lookup. Since the swap function is not currently
used, it is simply removed now.
Make Variant helper class constructors explicit

These constructors should not be used as converting constructors because
such conversion is unnatural.
Make Variant constructor taking TypeTag explicit

TypeTag should not be implicitly converted to Variant.
Make Mayge constructor taking TypeTag explicit

TypeTag should not be implicitly converted to Mayge.
Make SharedFuture & Try operator bool explicit

These types should not be implicitly converted to bool.
Fix Variant::IS_NOTHROW_SWAPPABLE definition
Fix Variant swap documentation
Define Variant::swap inline

All member functions are now defined inline.

The non-member swap function is now defined in terms of the member
function. The noexcept specification for non-member swap is also fixed.
Merge pull request #110 from magicant/fix/misc

Miscellaneous fixes