TimeZoneInfo.StringSerializer: Avoid some unnecessary allocations (dotnet/coreclr#8783)
Instead of using multiple calls to `string.Replace` to escape reserved
chars before appending to a `StringBuilder`, do the replacing while
appending the chars directly to the `StringBuilder`.
Also, append numbers/dates directly instead of running it through the
escape method, as these Invariant-formatted strings will not contain any
chars that need to be escaped.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d15b16516ebc580d88d179e8cdf800bbeac1b4b