Merge SemanticInfo and Document classes.

These were separate because Document originated at the LS level.  Over time
it got pushed down into the compiler itself.  Once that happened, there was
no need for both types representing the same concept.
Update language specification.
Rename fields.
Add comment.
Rename methods.
Remove unnecessary method from compiler state.
Stop exporting compiler state helpers.
Use a module instead of a class with statics.
Expose line/character info off a diagnostic instance.
Review feedback.
Move code out of the compiler state into the language service.
Move host synchronization into the compiler state object.
Rename fields.
Don't pass a settings object to the reference resolver when all it needs is a single setting property.
Rename CompilerState to LanguageServiceCompiler.
Move caching of the current edited syntax tree to its own class.
No need to store data about which function parameter we're in.  We can determine this syntactically.
Use foreach in a few places.
Remove unused code.
Accessors can't be signatures.  Removing unnecessary code.