A lazy string that can take a byte buffer and encoding and interpret it as a string if/when requested. The string is cached and saved for any further
requests. "NULL" values can be represented by a 0-len string or a null passed to LazyString(String).