addMarker() optimizations.

Essentially, DocumentMarkerController maintained a list
(WTF::Vector) of markers. And linearly traversed that list
to coalesce markers. If the marker count is large, that's
not optimal.
To improve things the list has been split into couple by the
type of a marker and linear traverse has been replaced with
the binary search (std::lower_bound() & std::upper_bound()).
Also traversing is not performed if not needed. After this
PerformanceTests/Interactive/spellcheck-paste-huge-text.html
shows 7-12% improvement.

BUG=279293

Review URL: https://chromiumcodereview.appspot.com/23728006

git-svn-id: svn://svn.chromium.org/blink/trunk@158288 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Introduce the platform dylib

This CL is a second attempt to create a platform.dll for Blink. This CL sets up
the basic structure for the platform dylib, including DEPS and linking. It also
migrates one file from core/platform.

This CL also introduces platform_unittests, which is a unit testing target for
this layer. I've added a test for the Clock class to ensure that
platform_unittests builds correctly on all operating systems.

R=jamesr,eseidel
BUG=297477

Review URL: https://chromiumcodereview.appspot.com/24081005

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