Fathom TCP level changes. TracedBuffer for keeping track of all buffers
to be traced. Adding tests for Fathom and TracedBuffer. A lot more.
Please read PR description.
diff --git a/src/core/lib/iomgr/ev_epollsig_linux.cc b/src/core/lib/iomgr/ev_epollsig_linux.cc
index 2189801..7bdfa22 100644
--- a/src/core/lib/iomgr/ev_epollsig_linux.cc
+++ b/src/core/lib/iomgr/ev_epollsig_linux.cc
@@ -947,15 +947,27 @@
 }
 
 static void fd_notify_on_read(grpc_fd* fd, grpc_closure* closure) {
-  fd->read_closure->NotifyOn(closure);
+  if (closure != nullptr) {
+    fd->read_closure->NotifyOn(closure);
+  } else {
+    fd->read_closure->SetReady();
+  }
 }
 
 static void fd_notify_on_write(grpc_fd* fd, grpc_closure* closure) {
-  fd->write_closure->NotifyOn(closure);
+  if (closure != nullptr) {
+    fd->write_closure->NotifyOn(closure);
+  } else {
+    fd->write_closure->SetReady();
+  }
 }
 
 static void fd_notify_on_error(grpc_fd* fd, grpc_closure* closure) {
-  fd->error_closure->NotifyOn(closure);
+  if (closure != nullptr) {
+    fd->error_closure->NotifyOn(closure);
+  } else {
+    fd->error_closure->SetReady();
+  }
 }
 
 /*******************************************************************************