Made project dependency resolution lazy
- Change ILibrary to take a Func<ILibraryExport> in GetProjectExport
so that cached results don't evaluate dependencies.
- Removed transitive caching since it happens for free
- Use ConcurrentDictionary for the MetadataFileReferenceFactory and
  compilation cache.
- Improved tracing in the RoslynCompiler and RoslynProjectReference
- Moved caching into ProjectLibraryExportProvider