This work replaces gRPC Core's iomgr with a public interface for custom, pluggable implementations which we're calling EventEngines. EventEngines are tasked with providing all cross-platform I/O, task execution, and DNS resolution functionality for gRPC Core and its wrapped languages. This public API will make it easier to integrate gRPC into external event loops, it will eventually allow siloing events between gRPC channels and servers, and it will provide another way to support the C++ Callback API.