Build projects in correct order and allow for parallel builds.
In tools/xbuild:
* SolutionParser.cs (ProjectInfo.Dependencies): Change to a dictionary
to keep track of corresponding ProjectInfo objects.
(ParseSolution): Refactor to populate the ProjectInfo.Dependencies
dictionary. Use AddBuildLevels to emit build levels to allow
parallel builds.
(AddProjectTargets): Dependency's projectInfo is directly available now.
(AddBuildLevels): New. Emit items named BuildLevelN, where each level
has projects that can be built in parallel. Lower levels represent
dependencies for higher levels.
(AddSolutionTargets): Instead of using CallTarget, directly use MSBuild
task with the new BuildLevelN stuff. Also tell the user about disabled
projects or missing project configs.
(TopologicalSort): New.
(Insert): New. Based on code from monodevelop.
In tools/xbuild/tests:
* standalone/Project01: Update .sln.proj file.
svn path=/trunk/mcs/; revision=139933