Consolidate most simple vs. complex Font methods

This CL encapsulates the simple/complex logic in a low level glyphBuffer builder function, and removes all paint-related codepath-specific methods. Everything above buildGlyphBuffer() now operates on a codepath-agnostic data structure (glyphBuffer).

To pull this off, the CL unifies GlyphBuffer & GlyphBufferWithOffsets by adding offset support to the former. The approach has no downside beyond a slightly increased stack frame size for the simple path, and is aligned with plans to eventually store offsets for simple text also (and possibly drop advances altogether).

Also, most text blob caching logic is relocated down into Font drawText() - which allows us to trivially add support for complex text blobs (currently still off due to the lack of offsets support in buildTextBlob). The advance return value (which doesn't play well with blob caching) is dropped, and the only existing client for it is converted to use a new dedicated, blob-cache-bypassing drawUncachedText() method.

R=jbroman@chromium.org,eae@chromium.org,dominik.rottsches@intel.com,leviw@chromium.org

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

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