Merge $CompileModule and $CompileScript into a single intrinsic $Compile
with a parameter. The result is always a script object that can be
passed to the other script-related intrinsics. (ES6 scripts subsume
modules.)

Add comments noting a few bugs around scripts containing module
declarations.

Update comments at top.

Rename $AddForNextTurn -> $QueueTask.

Remove @makeContinuation, inlining it into the one call site.

Rename resolve().other to resolve().extra; neither name is good.

In @onFulfill, simplify the code, getting rid of `plan`.
Pass loader.strict to $Compile.
Fix bug in eval() when the script imports a declared module.
In eval(), commit declared modules to the registry (since we do not create a LinkSet to do it for us). Move a comment about futures.
Remove special handling of undefined after calling normalize and resolve hooks. Fixes #13.
Remove reference to #11.
Change @import to return normalized instead of an object. This makes call sites easier to understand. Make @checkModuleDeclarations insert entries into this.@loading. Change LoadTask to have a .script member rather than a .module member, since LoadTasks represent passes through the pipeline, which could load either a script or a module.
Add comment in @ensureModuleExecuted regarding execution order and scripts declaring multiple modules.
Split browser hooks out into a separate file.
Use strict in browser-loader.js.
Remove explicit module-declaration syntax from loaders.js.
Rename "waiting" status to "loaded".
Style: prefer double-quotes to single-quotes for strings that do not contain double-quotes.
Comments.