[ES6 modules] Introduce ModuleMap

This CL introduces ModuleMap, which corresponds to "module map" spec concept.
ModuleMap keeps track of every ModuleScripts loaded inside a single Modulator.
When a ModuleScript instance is needed, we query ModuleMap to find if there is
a existing instance of the ModuleScript. If there isn't an existing instance,
ModuleMap is responsible for fetching it.

See below diagram for where it stands in the stack:
https://docs.google.com/document/d/1vjiWxwhg9D0GNNOYgw3AxMG0iKOC9I3jlID4GTgZsac/edit#heading=h.47x0qrpzjbj4

BUG=594639

Review-Url: https://codereview.chromium.org/2704323002
Cr-Commit-Position: refs/heads/master@{#453141}
9 files changed