Reapply "[libc++] Optimize fstream::read" (#206453)
This was reverted due to causing crashes if an ifstream wasn't opened.
This patch addresses this issue by simply checking whether the `__file_`
handle is null, and if it is simply fall back to the generic
implementation.
Fixes #168628
Fixes #205845
This reverts commit 347512ff38748ac6ebfacbfda172edb5cf1edbe2.