EventManager no longer depends on Nano::signal. Now uses std::function