[libc++] Granularize includes of <optional> (#213433)

Since `<optional>` is now granularized
(7ded638ea33b96d9fd628e2a5cbc06df12ede153), include its individual
pieces directly, instead of pulling in the whole `<optional>`.

This change is also needed for #211888.

GitOrigin-RevId: cad2ca9a775c094f8e0687f1e2414a2ea25e1487
39 files changed