Bug 15574. XML deserialization recursion: add array type to known_types?

One way to prevent https://bugzilla.xamarin.com/show_bug.cgi?id=15574 is to add the problematic array type to the `known_types`.

On the other hand, this might not be the intended use of `known_types`. In that case, perhaps a better fix would be to guard against recursion in the `foreach` loop:

	if (t != type)
		RegisterTypeAsKnown (t);
Bug 15572. Lookup KnownTypeCollection element types in MSSimpleNamespace

This patch prevents the problem in https://bugzilla.xamarin.com/show_bug.cgi?id=15572. This change allows the DataContractSerializer to deserialize DataMembers that use an array KnownType, at least for the test case in the bug report.
SqlBulkCopy Implementation

This are the code changes to get the SqlBulkCopy procedure working on
mono.
Support for DispIdAttribute in GetIdsOfNames

License: This patch is under the MIT/X11 license.
Add hacking MSBuild solution for MSBuild libraries.
implement various not-implemented types in Microsoft.Build.dll.
Add missing ProjectInstance family.
implement some MS.Build members as well as adding missing members.
MS.Build.dll: Add more missing members and implementation for some members.
Add missing tests in csproj.
Add IBuildEngine3 and IBuildEngine4.
Add IBuildEngine3 and IBuildEngine4 to csproj.
ToolLocationHelper is now used in MS.Build.dll too (as internal).
Add ToolLocationHelper and co. to MS.Build.dll (as internal).
implement ProjectCollection.Toolsets.
update MS.Build.csproj.
fix test csproj build.
Fix MS.Build.Tasks.csproj build too.
Add ToolsetTest and fix Toolset construction.
update MS.Build test csproj.