Change char::escape_{default,unicode} to take callbacks instead of allocating
strings
Specialize to_str_common for floats/integers in strconv

This allows the integral paths to avoid allocations on the heap