[libc++] Granularize <__locale> into __locale_dir (#213667)

The <__locale> header was a collection of distinct utilities. This patch
splits it up into granular headers under __locale_dir/. This patch
however does not use the granular headers from users of <__locale>: this
will be done in a separate patch.

Assisted by Claude

GitOrigin-RevId: c703445771082920ce7cc13d75d721074539f914
9 files changed