Introduce UnicodeUtilities.{h,cpp} and add UnicodeUtilitiesTest.cpp

This patch introduces a set of Unicode utility functions extracted from TextIterator.cpp for using in several places.

BUG=

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

git-svn-id: svn://svn.chromium.org/blink/trunk@163744 bbb929c8-8fbe-4397-9dbb-9b2b20218538
[CSS Shapes] Simplify the BoxShape implementation

Reduce BoxShape's footprint by about 2/3rds. Instead of caching the FloatRoundedRects which represent a BoxShape's shape-padding and shape-margin boundaries, compute them as needed.

No new tests, this is just an internal refactoring.

BUG=327493

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

git-svn-id: svn://svn.chromium.org/blink/trunk@163745 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Avoid O(N) mallocs, where N is the depth of the tree, in dispatching events.

This makes event dispatching 40% faster according to the micro benchmark, PerformanceTests/Events/EventsDispatching.html.

The result of the benchmark on my machine is: 
  291 ops/s (without this patch) vs 408 ops/s (with this patch)

- Organize EventContext, MouseOrFocusEventContext and TouchEventContext so that we can allocate EventContext on the stack in the event path.
- EventPath can now use Vector<EventContext, N>, instead of Vector<OwnPtr<EventContext>, N>.
- Touch events are out of scope of this patch. I might address Touch events later.

BUG=325460

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

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