Mark *.dat files as binary to prevent line endings normalization; restore unittest_textio.dat

 Pcommon unittests now run fine
 Use variadic arguments and perfect forwarding to handle parameters and return values in pcomn::ensure_xxx

 - Use perfect forwarding to pass value argument "through" pcomn::ensure_xxx family

 - Use variadic arguments and perfect forwarding to pass arguments to exception constructor
   in std::throw_exception, pcomn::conditional_throw, pcomn::ensure, pcomn::ensure_xxx

 - PCOMN_ENSURE_ARGX, PCOMN_ASSERT_ARGX allow to pass an exception class, in
   contrast to PCOMN_(ENSURE|ASSERT)_ARG that always throw std::invalid_argument
Use "explicit operator bool()" instead of unspecified_bool idiom everywhere

  Completely got rid of pcomn::unspecified_bool machinery
Delete pcomn::hashtable (NOT pcomn::hashtable_closed!). std::unordered_map is better, anyway.
New type trait: pcomn::is_iterator