Some improvements of String

Made following improvements to the extent of not changing the ABI.
These are equivalent to the changes I made in taglib2 branch.

Reduced unnecessary copies and conversions, especially when constructing from UTF-8 string.
Fixed the confusing use of String::Type and related comments. String's internal encoding is not always UTF16-BE, the byte order depends on the CPU endian.