Port GenEvent to Elixir for upcoming extensions