Templatify NetGameEventDispatcher + some clean-up

- Templatify `NetGameEventDispatcher` to allow arbitrary number of parameters.
- Remove redundant constructors for `NetGameEvent`.
- Moved `NetGameEvent::to_string(const NetGameEventValue &)` to a static function in `NetGameEventValue`.
- Rename `NetGameEventValue::to_x()` to `::get_x()` because of new `::to_string()`.