Replace Lazy<T> with lock in NativeMethodsShared
Replace Lazy<T> with lock in NativeMethodsShared

Lazy<T> is not present in .NET 3.5, but there's only one minor use in
shared code. Expanded it to use double-checked locking instead so the same
code works everywhere.

jeffkl/msbuild,jeffkl/msbuild,Microsoft/msbuild,Microsoft/msbuild,Microsoft/msbuild,AndyGerlicher/msbuild,sean-gilliam/msbuild,mono/msbuild,jeffkl/msbuild,jeffkl/msbuild,cdmihai/msbuild,chipitsine/msbuild,chipitsine/msbuild,sean-gilliam/msbuild,rainersigwald/msbuild,rainersigwald/msbuild,Microsoft/msbuild,chipitsine/msbuild,cdmihai/msbuild,sean-gilliam/msbuild,AndyGerlicher/msbuild,mono/msbuild,AndyGerlicher/msbuild,sean-gilliam/msbuild,cdmihai/msbuild,mono/msbuild,cdmihai/msbuild,chipitsine/msbuild,rainersigwald/msbuild,mono/msbuild,AndyGerlicher/msbuild,rainersigwald/msbuild