Upgrade to .NET 4.0

The latest versions of the GeoIP, Eluant, and SDL2-CS libraries all target 4.0. This separates the .net changes from #4666, and then migrates everything to System.Lazy to remove the ugly namespace clash and unnecessary duplication.