Using direct storage on nodes for symbols seems to have little perf benefit now.
Add assert in resolveDeclaredSymbolWorker
Don't expose the semantic info chain off of the compiler.

This is an internal implementation detail that we don't want our outer layers taking a dependency on.
Move 'Document' into its own file.
Rename methods.
No need to skip first file when binding symbos.
Remove unnecessary code.
Compiler mutation methods don't need to return anything.
Inline method.
Add ability to remove files from the compiler.
Remove unnecessary code in the harness.
Harness should remove files from the compiler, not wholesale replace it's filename map.
Normalize file path in the compiler layer.
Expose less data off of the compiler.
Remove unused method.
Remove unnecessary method.
Remove unnecessary methods from the emitter host.
Remove global logger.
Remove unused code.
Remove unused emitter parameter.