[libc++] Optimize num_put integral functions (#120859)
```
-------------------------------------------------------
Benchmark old new
-------------------------------------------------------
BM_num_put<bool> 76.2 ns 32.0 ns
BM_num_put<long> 76.9 ns 33.1 ns
BM_num_put<long long> 77.9 ns 34.2 ns
BM_num_put<unsigned long> 78.4 ns 33.1 ns
BM_num_put<unsigned long long> 78.0 ns 34.4 ns
BM_num_put<double> 224 ns 228 ns
BM_num_put<long double> 239 ns 230 ns
BM_num_put<const void*> 68.7 ns 35.1 ns
```
Fixes #40109.