Made changes to how the load context works

- Load from default load context before custom loaders in the
AssemblyLoadContext.
- At runtime, the IAssemblyLoadContextFactory delegates to the default load
context.
- Use the IAssemblyLoadContextFactory to create a child load context
and load the project loader in that. This should make it work at build time
and within design time host.
- Removed the IAssemblyNeutralInterfaceCache
- Load ANIs in the default load context
- Create a child load context within roslyn itself. This
is required since it relies on the project loader being in place.
Build the minimal KRE and TPA list

- Create new project DependencyAnalyzer.
- DependencyAnalyzer is used during build time to generate a list of KRE
  required assembly and a trusted platform assembly (TPA list)
- KRE will includes the only necessary assembly for runtime used by
  Roslyn, ApplicationHost, klr.host, klr.core45.manager, DTH,
  PackageManager and Project.
- TPA list includes the dependencies of klr.core45.manager. The list is
  implemented in tpa.cpp