scan_cescape parses C escaped text from src into dest. Parsing stops at the 0 terminator, invalid input
characters or a double quote that was not escaped.
C escape sequences like \n and \x0a and \012 are translated into their binary counterparts. The C99
escape sequences \u and \U are supported and lead to UTF-8 sequences being output.
scan_cescape will then write the number of bytes in dest into *destlen, and return the number of bytes
decoded from src.
dest can be NULL. destlen can be NULL. dest can be src.
To make sure dest is large enough, either allocate strlen(src)+1 bytes or call scan_cescape twice, the
first time with dest == NULL (*destlen will still be written).