This patch adds the support for detecting suspicious string
literals and their incorrect usage.
The following example shows a incorrect character escaping leading
to an embedded NUL character.
std::string str = "\0x42"; // Should be "\x42".
The patch also add detection of truncated literal when a literal
is passed to a string constructor.
Isn't this identical to StringLiteral::getCodeUnit? Also returning 0 for unknown sizes is not a good idea imo.