several BuildEngine4 fixes.
- DependsOnTargets has to be Trim()med before search.
- Metadata implementation is required in the TaskItem.
Task parameters has to be expanded before being applied to ITask instance.
Filter out empty strings in split item array.
implement ProjectInstance.GetItems() which is now actually used.
Add and use BuildAbortedException.
update .csproj.
Add more diagnostic logging in BuildEngine4.
For expression stuff, change namespace to MS.Build.Internal.Expressionns.

Too annoying to track build engine traces.
Forgot to rename namespace in .jay.
implement ExpressionParserManual.EvaluateMetadataExpression().
remove redundant "throw NIE".
STRING_LITERAL could contain expandable expressions, so evaluate them too.

We cannot simply "expand strings first then evaluate condition as boolean"
because there are things like "$(A)=='true'" which is expanded as "=='true'".
implement UnloadProject().
add some workaround for "PLATFORM" property that should not be filled by environment.

Add some tests to evaluate IntermediateOutputPath.
Project.GetItems() and ProjectInstance.GetItems() are now shared code.

They will involve more complication and I don't want to have duplicates.
Split lengthy DoBuildTarget() function into understandable units.
Well-Known metadata support is now in ProjectItemInstance too, sharing code with ProjectItem.
Check Condition on task parameter before trying to apply it.
Fix ProjectInstance.ToolsVersion, never returned valid value.
ProjectInstance never had valid ToolsVersion because ProjectRootElement holds "", not null(!) for default value.