The CellTruncationProvider could only show raw text in a dialog
because it only had access to generated DOM, instead of react elements. This
diff adds an event handler to the CellTruncationProvider to allow for customized
expansion behavior (when a user clicks on 'View Full Message').
This diff pushes the CellTruncationProvider down into a new <LogsRow />
component, which has branching behavior based on the event node type. The
original structured content rendering logic was extracted into a separate
component (LogsRowStructuredContent), so we can render the exact same content
in the truncated table view as well as the unabridged modal view.
CellTruncationProvider becomes a little more generic (no longer tied to the
structure of the rendered DOM) at the expense of forcing each event type to
consider the truncated view flow.