Cdecl all the things, wrap delegates to hopefully get windows working and work around a .NET limitation with marshalling generic delegates