Introduce StringView

This CL introduces WTF::StringView, which is an offset + length "view" into an underlying String object.  This mechanism replaces String::substringSharingImpl, which leaves StringImpl::m_substringBuffer unused.  In effect, I've extracted this mechanism from being internal to String into StringView.

The one unfortunate part of this change is the code duplication in TextRun.h.  I tried using a template to avoid the duplication, but too many clients were relying upon the declared String type to force implicit conversions.  There's a lot of duplicated code in TextRun.h.  We should consider refactoring the TextRun constructors to share more code.

R=eseidel@chromium.org
BUG=261751

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

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