Update length on char substitution in HarfBuzzShaper

Change HarfBuzzShaper character normalization methods to recompute the
length of the string as the destination string may be shorter than the
source string in cases where a muli code unit character is replaced by
a single code unit character (such as a zero width space).

The m_normalizedBuffer array is still allocated based on the source
length. This may result in it being larger than required in the
relatively uncommon case where one or more multi code unit characters
are replaced with single code unit character. This saves us from
having to iterate over the string twice.

BUG=306255
R=jsbell@chromium.org

Review URL: https://codereview.chromium.org/27051004

git-svn-id: svn://svn.chromium.org/blink/trunk@159488 bbb929c8-8fbe-4397-9dbb-9b2b20218538