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.