Fix: Append semicolon to item macro invocations in serde2

Following changes in rustc.
Replace TreeMap with BTreeMap in the serde2
Replace StrAllocating with String type in function parameters

The key parameter of the insert functions are of type String now.
As insert requires ownership of its parameter `key` and StrAllocating
being gone in rust these functions now communicate that ownership
in their signature.

As a result &str must be converted into a String at the caller instead
of the callee.

The Trait ToOwned isn't an alternative as it's a generalized Clone.
StrAllocating simply has hidden an allocation or move.
Fix: Utf16 handling moved from std into unicode crate

Following a rust change.
Fix: String::from_utf8 changed function signature

Following a rust std change.