Update the sequential focus navigation algorithm so that the focus navigation traverses shadow trees based on a tree of trees.


The algorithm used in the old Shadow DOM spec is to traverse shadow trees based on the composed tree. That has several issues:

- Hard to control distributed nodes's focus navigation. The effect of tabindex attribute is not local to the node tree.
- Focus navigation for <details>/<summary> is broken.
- The focus navigation for multiple shadow roots is ambiguous. The behavior is not clearly defined.


I've recently updated the Shadow DOM spec so that the focus navigation should
traverse shadow trees based on a tree of trees. What's changed:

- A distributed node no longer participates in the focus navigation of the shadow tree.
- A focus scope is now fully recursively defined.
- Each node tree now becomes a scope of a sequential focus navigation order.
- Owners of a focus  scope are:
    * A document - hosting a focus navigation of the document tree.
    * A shadow host - hosting a focus navigation of the youngest shadow tree.
    * A shadow insertion point - hosting a focus navigation of the older shadow root.
- The effect of tabindex attribute is now completely local to the node tree.

Note that there is yet another focus scope owner - IFrameOwnerElement. This patch doesn't change the behavior of a focus navigation for iframes.

Please see the Shadow DOM spec as the normative reference:
https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#focus-navigation

BUG=234034

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

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