[libc++] Avoid more <format> code in <vector> (#185596)
This patch primarily splits `__parser` into a `__parser_data` base
class, which contains the actual member variables, and `__parser`, which
just contains the functions operating on the data. This allows us to
store `__parser_data` inside `formatter<bool>` and avoid including most
of the `<format>` code.
This makes it ~45% faster to parse `<vector>` on my system.