Research now takes time

When a research is finished, it calls the ResearchedEventHandler in EventManager.cs
Prevent researching things in progress; optimization to ResearchingInfo

MeetsRequirement() in CanResearch prevents player from researching if we are already doing it.
UpdateStatus() in ResearchingInfo checks the closest upgrade from finishing instead of iterating through all of them