[Unix] Use exec before calling into a child process
Merge pull request #1001 from Tragetaschen/unix-exec

[Unix] Use exec before calling into a child process
Small changes to improve dependency resolution performance
- Mark skipped nodes as rejected. Today if a node is rejected
and the children in the "acceptable" state, they are never looked at again.
The conflict resolution algorithm ends up running 1000 times even though
the parents are rejected.
- Renamed AsseemblyLoaderFacts to DependencyWalkerFacts
- When a node is eclipsed, shortcircuit immediately
- Add tracing for more discrete points withing the
runtime graph walk
- Remove the LINQ from the ProjectResolver
Fixed typo in trace
Reacting to Rolsyn changes
Delay the runtime graph walk until the last minute
- Cache it as well

#1011
More cleanup for kpm
- Removed FindLibraryBySnapshot since the input itself
is aware of snapshot versions.
- Use C#6 features to clean up some of the null checks
- Reuse FindLibraryByVersion in FindLibraryByName
- Added comments for RestoreOperations.FindLibraryMatch
- Removed IWalkProvider.FindLibraryByName as it was only used
by RestoreOperations specifically for project lookups.