Optimize glyph positioning for SVG <textPath> layout

Introduce a new class Path::PositionCalculator, that keeps traversal
state related to path position/normal calculations, and allows
exploiting locality for such queries.

Using this new class for the layout of glyphs on a <textPath>. This
means it possible to achieve O(n) runtimes in many cases. The worst
case remains the same, O(n^2), as when using state-less queries.

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

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