Having the header granularized makes it possible to remove the
dependency on this header in <format>. This <format> header gets
included in more headers due to more usage of std::formatter in the
library. This should reduce the number of transitive includes.
Note formatting the new headers will be done in a followup patch.
I think we should put these and the floating point overloads in a __fwd/to_chars.h header to avoid having a different overload set depending on what file is included. A linker error is a lot better than a program that compiler but is subtly wrong.