Group invalidations by top stackframe

This patch groups invalidation causes based on their stacks and causes.

Example:
<span id="honey">badger</span>
<span id="dont">care</span>
<script>
  function setColors(els, color) {
    els.forEach(function(el) {
      el.style.color = color;
    });
  }
  requestAnimationFrame(function() {
    setColors([honey, dont], "cornflowerblue");
  });
</script>

In this example there are two style recalculations caused by a call
to setColors. With this patch, these will be grouped together. Followup
patches will clean up some of the rough edges such as when node
names are very long. Another cleanup opportunity is to improve the
UI when only a single node is invalidated (the expanded information
can be pretty much useless.)

More complex example: http://pr.gg/dupes.html
Screenshot from example: http://pr.gg/groups29.png

TEST=timeline-grouped-invalidations.html
BUG=428436

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

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