[InputEvent] Introduce |StaticRange| and use in |InputEvent::getRanges()|

|StaticRange| is a lightweight version of |Range|, but it
does not mutate on DOM change, so using |StaticRange| won't
slow down DOM operations.

|StaticRange| should be used in new APIs, and it
provides method |toRange()| to up-convert to a fully
featured |Range| object when necessary.

Currently it's |RuntimeEnabled=InputEvent| since it's only
used by |InputEvent|.

Proposal=https://github.com/garykac/staticrange/blob/master/staticrange.md
WICG=https://discourse.wicg.io/t/proposal-staticrange-to-be-used-instead-of-range-for-new-apis/1472
BUG=609142

Intent to Implement:
https://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/InputEvent/blink-dev/RrnitB0OElc/rirueVekCwAJ

Review-Url: https://codereview.chromium.org/2022863002
Cr-Commit-Position: refs/heads/master@{#398376}
12 files changed