Fix bug #1328254 - Explain options 'm' got TRANSLATE error

This modifies ExplainTuple::setCol() so that when the code trims the
'explain' output to the maximum length for a line of explain output,
it is careful to *not* split any multi-byte UTF8 character that might
be at the end of line. It puts the '*' (indicator of continuation) over
the top of the *first* byte of the UTF8 character and a '\0' after the
asterisk.

This second patch set moves the knowledge of UTF8 bit patterns out
of .../ExplainTuple.cpp and into .../csconvert.cpp.  This was done
to address one of the concerns brought up by a gerrit reviewer.

The other concern raised by the gerrit reviewer turns out to be a
non-issue because the ExplainTuple function uses only 4 Fixed-Char
columns where the first 3 never have UTF8 characters.  The last
one is a column containing table names and HBase does not currently
support UTF8 characters in table names.  In fact, it limits table
names to only [a-zA-Z_0-9-.] which is only a 65 character subset
of ASCII.

A unit test was developed which set EXPLAIN_DESCRIPTION_COLUMN_SIZE
so that a UTF8 character was put at the end of the output and thus
got the TRANSLATE error before putting in this fix.  The error did not
occur once this fix was put in.

Also, all dev regressions were run to ensure that the fix has no
side-effects.

Files changed:
sql/comexe/ExplainTuple.cpp
sql/common/csconvert.cpp
sql/common/csconvert.h

Change-Id: I977ce552951d9773fcad84dfcddac9657327842f
Merge "Fix bug #1328254 - Explain options 'm' got TRANSLATE error"