A crazy amount of changes to make running in VS faster

Big changes here are: 
- The new caching system for compilations
- The new caching interface is used across all application contexts in the design time host so maximum sharing happens as a result.
- The runtime has support for delegating project compilation to a compilation server. A --port flag was added to accommodate this.
- The design time host only sends changed thins now. A basic implementation of IsDifferent was implemented.
- IMetadataProjectReference was changed to accept `Func<ILibraryExport>` instead of incomingReferences and incomingSourceReferences to avoid evaluating the dependency tree until required.
Yes, in fact Troy filed a bug about suspicious memory use (and that was before this change). So I'd say that it will see this change. I'm also not too worried about memory optimization for in process compilation. Roslyn is aggresively caching a lot already and we keep around stuff on top. We might be able to get rid of the low hanging fruit (like getting rid of all of the compilation cache when) after we load but I think we'd be micro optimizing.