Flatten ModuleTreeLinker

1. This CL applies the spec change by
https://github.com/whatwg/html/pull/2971.
Since [1], the code has already been behaving like the spec PR 2971, and this CL
makes the code align with PR 2971 more completely, by removing AncestorList
and adding spec comments.

2. This CL also flattens the code structure of ModuleTreeLinker, which is
enabled by the spec PR 2971, to make the code simpler to make further
optimizations easy.
That is, instead of creating a ModuleTreeLinker for each module script
(i.e. for each "fetch the descendants" call) in a module graph, this CL
creates a single ModuleTreeLinker that corresponds to a top-level module graph
script.

Most of fetching-related classes/methods, including
- ModuleTreeLinker::DependencyModuleClient
- ModuleTreeLinker::FetchDescendants()
- ModuleTreeLinker::NotifyOneDescendantFinished()
are merged into the single method NotifyModuleLoadFinished() that implements
the main body of "fetch the descendants" and
"internal module script graph fetching procedure".

This also removes ModuleTreeReachedUrlSet and instead uses HashSet<KURL>
directly, as we no longer have to share it across multiple ModuleTreeLinkers.
Modulator::FetchTreeInternal() is removed as we no longer create
ModuleTreeLinkers for subtree fetching via Modulator.

3. This CL applies a part of
https://github.com/whatwg/html/pull/2991, particularly introduces
FindFirstParseError() that corresponds to "find the first parse error" and
use it to find the error to be reported, instead of propagating errors
based on Step 6.1 and 6.2 of "fetch the descendants".

(*) In some subtle cases, this might cause behavior changes in error reporting,
but these changes shouldn't be significant, because anyway the spec before
PR 2991 (and thus the previous implementation) behaves nondeterministically
in some similarly subtle cases.

This CL is an intermediate step to apply spec PRs 2971 and 2991.
This CL refactors largely ModuleTreeLinker with keeping the existing behavior
mostly (except for (*)), and subsequent CLs will apply the behavior changes
and remaining code structure changes introduced by PR 2991.

Bug: 763597
Change-Id: I0ef38c5ebf462fa7f02093f1725ea0014b80585d
Reviewed-on: https://chromium-review.googlesource.com/583552
Commit-Queue: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503034}
14 files changed