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
FileSystem interacts with TextDocument/TextSnapshot in the foreground thread

alter ProjectOptions.LoadTime only for Rename refactoring and Find all references
do not take into account saved open documents when altering ProjectOptions.LoadTime
do not call ClearLanguageServiceRootCachesAndCollectAndFinalizeAllTransients when solution is closing in order to cut VS closing time
remove ForegroundThreadGuard.ExecInForegroundThread
catch FCS exceptions in LanguageService's mailbox
Merge remote-tracking branch 'fsprojects/master' into virtual-file-system

Conflicts:
	src/FSharpVSPowerTools.Core/LanguageService.fs
	src/FSharpVSPowerTools.Logic/ProjectProvider.fs
Fix the issue where script files might not appear on the list of source files
Refactoring language services
Merge pull request #2 from dungpa/virtual-file-system

Virtual file system
fixed: ProjectProvider.FullOutputPath returns not normalized path
fixed: ProjectProvider.GetReferencedProjects raises NRE on solution closing
fixed: Project.GetReferencedProjects raises NRE during VS closing
Merge pull request #408 from vasily-kirichenko/virtual-file-system

add virtual file system