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
Rename backing fields of Implement Interface

It generates fresh registry keys for the feature so this feature will be
enabled by default on users' machines.
Update docs for Implement Interface
update implement_interface.gif
Merge pull request #3 from vasily-kirichenko/update-docs

update implement_interface.gif
Merge pull request #413 from dungpa/update-docs

Update docs
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