IDL compiler: sync Python to r166698 (and add test case)

Python side to:
Move encryptedmedia module to oilpan
https://codereview.chromium.org/139173012

BUG=239771
TBR=haraken
NOTRY=true

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

git-svn-id: svn://svn.chromium.org/blink/trunk@166812 bbb929c8-8fbe-4397-9dbb-9b2b20218538
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