Updating Roslyn compilation to default to experimental LanguageVersion
Updating tests to reflect Experimental switch
Reacting to Roslyn changes
Updating tests
Updating tests that were missed the first time
Added initial caching implementation
- This caches syntax trees and metadata references on disk
Added implementation for IsDifferent
- Design time host should only send back changed things
Added support for compiling out of process via the design time host
- If a port is specified on the command line option, the design time compiler
becomes the default. This will requests compiled projects via TCP instead
of doing it in process.
- Also split the cache out across multiple files as part of refactoring
Refactoring things in the runtime and design time host
- Split things into different files
- The DTH always compiles and keeps assembly bits in local state in each
  ApplicationContext
- Reuse the ApplicationContext for the runtime connection to DTH
- Query context ids before requesting compiled bits
- Flow errors and surface them properly
Made changes to design time host implementation
- Added ProjectChanged message type
- Moved GetCompiledAssembly and GetDiagnostics to the ApplicationContext
We still need to fix up message types to make
sending binary more efficient.
- Added comments detailing why GetHashCode wasn't implemented
Close all pending responses if there's an error in the read loop
Fix "kpm restore" with global.json

- Use the global.json as the single source of facts. No project.json is
  needed.
- Strictly restore the packages in global.json. No more no less.
Extract common logic into shared methods
Code review changes
Restore exact version of a package when restoring with gloabl.json