Based on Zhuo Qiang's patch with added tests and support
for `operator=`.
I also used `codecvt_type` to detect `filesystem3::path`
instead of `string_type`. Using `string_type` made
`filesystem2::path` ambiguous because it has both
`string_type` and `external_string_type` members.
The member types are a bit arbitrary, but a more precise
distinction would probably also be more expensive.
[SVN r72382]