I just spotted somebody with an interesting idea.
http://forums.civfanatics.com/showthread.php?t=549021
I wonder if we should have that feature, possibly in a simplified version. If I add a bool to researchCivEffect telling that it is a wonder civeffect (we need a better name). If it is set, then canResearch() can check if the CivEffect is set in the "was ever researched" array, which is used for gifts to the first to research. If it is there, then canResearch returns false. When this array sets a CivEffect to true, it can check if it has this bool set (and if it is research) and if it is, it loops all players and unsets the research if it is set to that civeffect.
That's it. Nothing else will be needed. XML modders can then make it complete by using other bools, like can't be traded. If we split the features into multiple XML bools, it can be possible to allow only one player to research the tech, but still allow it to be traded and possibly stolen by spies.
The correct location for this would be research CivEffects as that mean it would add this feature to both techs and perks.
If we agree that this would be interesting to add, I will add it. However I don't think I will do it before next release. We really need to release in the near future and we can't just add more features and postpone the release.