[xbuild] Fix mscorlib resolution for custom frameworks

Now that mcs supports multi-targeting, we can use the MSBuild 4.0+
system of finding mscorlib.dll in the target framework folders and
passing it to the compiler, along with the /nostdlib argument.

Like MSBuild, the old NoStdLib property can be set to true to disable
passing mscorlib.dll to the compiler, and the new NoCompilerStandardLib
property can be set to false to disable passing /nostdlib to the compiler.

This makes custom target frameworks work correctly without having to
override CscExe with a wrapper script.
[xbuild] Fix typo that broke 2.0/3.5 targets
[xbuild] Make ToolLocationHelper work better for 2.0/3.5

Mono keeps unversioned tools in the 4.5 directory, so look there
for 2.0. Additionally, most 3.5 tools are in the 2.0 directory.
[xbuild] Fix Tooltask.ToolPath behaviour to match .NET
WebRequest: Provide stub ImpersonationLevel

The old implementation threw an exception requesting that the method be implemented
in a derived class, but the method is not virtual, so it could have never been
implemented.

Since Mono does not support this, at least we keep the token around and avoid
throwing.
[DataAnnotation.Validator] Add support for nullable types, patch from lmarinucci@yahoo.com, fixes #17318
#17636: Allow Int32.Parse with/AllowExponents to take negative exponents.  This is a change in behavior from 2009, when we fixed this: Novell#542464, now we match .NET 4.5
[Uri] Fix the ParserUser feature of UriParseComponents

The current implementation was wrong, did not bother with pct-encoding
(despite being listed in the comments) and did not use the actual set
of characters listed on the spec, instead of using a white-list, it
had its own incorrect black-list.
[xbuild] Fix 2.0 tests to handle mcs sdk argument
[HttpListener] Only bind to the specified hosts (and support '*' as Any), fixes #17204, #10818
[mscorlib] Path: fix GetFullPath (/../bin/bash) to return /bin/bash, not bin/bash, fixes 17083
added OSX travis branch