tp: rework windowed sorting to be packet offset based

This CL rewrites the core windowed sorting logic of trace sorter to be
based around packet offsets and flush/readbuffer events rather than time
ranges derived from the config.

This reduces the likelihood of things like suspend and drifting clocks
from messing up the sorting and causing out of order events.

Doc: go/trace-sorting-is-complicated
Change-Id: I9e3022cc459014df81746c21fc1f15ab7cc714a3
Bug: 192694346
diff --git a/CHANGELOG b/CHANGELOG
index 0861716..e63367e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -11,6 +11,12 @@
       new-line when specifying a query file with -q to trace processor shell.
     * Added "ancestor_slice_by_stack" and "descendant_slice_by_stack" table
       functions to walk up and down the slice stacks.
+    * Overhauled windowed sorting to be based on packet ordering and
+      lifecycle events inside the trace instead of time-based ordering. 
+    * Deprecated |SortingMode::kForceFlushPeriodWindowedSort| due to
+      windowed sorting chagnes. Embedders should switch to
+      |SortingMode::kDefaultHeuristics|; this option will be removed
+      in v21.
   UI:
     *
   SDK: