Consolidate Document and SourceFile

Document used to be a superset of SoruceFile, consolidate these into one notion
Note: ByteOrderMark is required as it affects the output, and all users of the createSourceFile should think about, where as version and isOpen are LS-specific notions and not every user need to know about them per se.
Is this merging with the other `SourceFile`? Why not put this all in a different namespace, have this extend `ts.SourceFile` and avoid having to suffix type names with `Object`?