Add convenience std::string overload for toLowerAscii
Summary:
`toLowerAscii` is surprisingly hard to use with `std::string` because (until C++17) `data()` returns a `const char*`. In addition, it is not widely known that `s[0]` is legal even if the string is empty. This can lead to a variety of suboptimal code, from explicitly checking emptiness, to casting away the `const` (which causes UB).
Let's just have a simple overload for it.
Reviewed By: pixelb, philippv, yfeldblum
Differential Revision:
D5801970
fbshipit-source-id:
407e2e9e66147a0662a5e09c75921255adff0702