string_ref: fix non-conforming data() returning null pointer

The technique in this commit retains the default constructed value being
a valid empty range [data(), data()+size()) while not using a null
pointer value for data() nor requiring a static object to hold a
referenceable empty string.