Port over changes to the ScriptSnapshot API from the languageService-v2 branch.

Port over changes to the ScriptSnapshot API from the languageService-v2 branch.
The problem with making things optional is that people forget to pass the right value in.  When i had it optional there were a bunch of places that were missed, thus causing the version of the source file to be wrong.