CSharpCompletionTextEditorExtension: allow TextEditorData to be extensible

Previously the TextEditorData used to perform
completion was bound strictly to the bound
Document.

Allow TextEditorData to be overridden and use
that property for completion. This allows
subclasses to provide an alternative for
completion in case the editor buffer/document
and parsed document differ.
CSharpCompletionTextEditorExtension: make project content virtual

Allow subclasses to control the ProjectContent
CSharpCompletionTextEditorExtension: make Compilation virtual

Previously the compilation was pulled from
Document. Hoist the Document.Compliation getter
logic into the completion extension, and fall
back to ProjectContent.CreateCompilation directly
if there’s no Project.

This allows documents without projects to control
their references.
SourceEditorView: expose OwnerDocument and make HandleDocumentParsed virtual