Downport of most of the .NET 4.5 framework from mono to work on .NET 3.5