Shape across HarfBuzz runs

Change HarfBuzzShaper to shape text across HarfBuzzRuns. This allows
for better handling of zero width joiners and is the first step towards
supporting shaping across elements.

Must land after change 167703008 as without that change it will cache
incorrect information due to the text string value no longer being
sufficient as shaping now includes contextual information from adjacent
runs.

R=behdad@chromium.org,leviw@chromium.org
BUG=345401
TEST=PerformanceTests/Layout/hindi-line-layout.html

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

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