First of all, do note that techs are linked to teams, not players. It's a minor detail, which often doesn't matter, but in some cases it matters a great deal.
Personally I would add something like this in the DLL rather than python. The DLL is much faster and the debugger is a great help when fixing bugs. However python works on mac too and it can be used without installing the compiler. This mean the real answer to which place to add it is "it depends". It can be done in the DLL and most likely also in python.
Regardless of picking DLL or python, I think the steps are pretty much as Dancing Hoskuld said.
canResearch() have to check to see if it is researched by somebody. Presumably the easiest way to do this is to borrow the code to check for gaining gifts for first to research.
onTechAcquired should loop all teams and remove the tech from the research queue. Do consider what should happen, like a message or something.
You also need to ensure that the tech isn't traded, gained from a goody hut or similar.
I kind of like the idea to have techs like that. Now I wonder if I should add it to Medieval Conquest.