add virtual file system

fix FileSystem.GetLastWriteTimeShim

add logging

alter ProjectOptions.LoadTime is any of dirty docs is changed
use OpenDocumentsTracker to determine if project cache should be invalidated

fix compilation
FileSystem uses TextDocument.Encoding to get binary representation of files
add LastChangeTime and Encoding into OpenDocumentTracker and use them in VFS
VSLanguageService.getProjectOptions set LoadTime as max of the project load time and open documents change times