This change adds ASAN container annotations to std::string. String-specific annotations can be disabled with _LIBCPP_NO_ASAN_STD_STRING define.
When the string is small, in-object memory is appropriately poisoned to catch the code accessing invalid memory regions.
For new string layout, it is impossible to poison memory precisely due to last byte containing string size. In this new layout last 8 bytes of string object are never poisoned.
this division deserves a comment