This patch introduces an alternative layout for basic_string which when the string is short, the data pointer will be word-aligned.  It can be activated with -D_LIBCPP_ALTERNATE_STRING_LAYOUT.  These two different layouts (the default and _LIBCPP_ALTERNATE_STRING_LAYOUT) are not ABI compatible with each other.  Once one is chosen for a given platform, it is disruptive to change it.