[ms.build] pass DefaultToolsVersion from ProjectInstance to build request data.
[ms.build] several fixes in BuildEngine4.

- InitialTargets also need to be executed.
- toolsVersion must be filled.
- HostServices object is also passed from the parent build.
[MS.Build] load ImportGroup in root.
[MS.Build] ProjectInstance needs ChildrenReversed to evaluate items.

This behavioral difference between ProjectRootElement, Project and
ProjectInstance was discovered while trying to get F# project working
(where item order significantly matters).
[MS.Build] revise previous fix; only Items are in reverse order.

The previous change regressed at order of property evaluation. Now this fix
does not regress as well as F# project still builds.
[MS.Build] make env. properties are read only, and show initial properties in different manner.

Now it's easier to see project properties and other properties.
[MS.Build] simplify IBuildEngine.Build() implementation, and build the argument project, not the project that is being built by the BuildManager.

That was wrong recursion.
[ms.build] make sure that we don't skip any other kind of child under target element.
[MS.Build] fix function call expression parsing wrt nested refs: $(X('$(Y)','$(Z)'))

Nested references inside quoted strings are not parsed correctly.
To resolve this issue, parse quoted expressions in more complicated way.
[MS.Build] '\\' is also escaped syntax, so parse it carefully too.
[MS.Build] add function call releated tests.
[msbuild] build the projects via MSBuild task with appropriate configuration, not the entire projects in the solution.
[MS.Build] fix some issues around quoted string handling.

Since the parser didn't really detect those quotation chars unless they are
top of the next tokeniation, it was always starting from wrong position.
[xbuild] ToolLocationHelper.GetPathToStandardLibraries() skips "" too.

Test is added too, but since it requires some environment setup, I didn't
enable it so far.
[MS.Build] when evaluated as object, do not add extra quotes.

When the object is passed as argument to property function, it gets extra
" or ' and could result in unexpected value.
[MS.Build] added test for ToolLocationHelper.GetPathToStandardLibraries() to add target item.

It should be used in Microsoft.CSharp.targets to pass the path to mscorlib.dll
but it's not working yet, so I'm making it to work step by step.
[MS.Build] ProjectOnErrorInstance should not cause build failure.
update .csproj.