tmf: Introduce the core concept of event aspects

An "event aspect" is a piece of information that can be extracted,
directly or indirectly, from a trace event. Simple examples could be
timestamp or event fields. But it could also be something indirect,
like a state system request at the timestamp of the given event.

This patch introduces the base ITmfEventAspect interface, some basic
implementations, and simplifies the TmfEventTableColumns to use aspects
instead, since part of it is now redundant.

Fixes bug #451411.

Change-Id: Ib045439d6084a6e6c7c276f1eddccfb13fe01be0
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
tmf: Remove the ITmfEventTableColumns extension point

Add a getEventAspects() method in ITmfTrace, which allows trace types
to define which aspects can be relevant for their own events.

This becomes redundant with the ITmfEventTableColumn extension point:
now that we build columns directly from aspects, the TmfEventsEditor
can simply call trace.getEventAspects() instead of reading extension
point data. The trace type is already defined in a core extension point,
so we'll pass the event aspect information through that now.

The combination of careful equals() methods in aspects and the use
of a Set in the TmfEventsEditor will allow "merging" aspects/columns
together, like was already the case.

Change-Id: Ic5b6126a50b1b1fdb4b2d5d23eb6a47a57555594
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
tmf.ctf: Rework the event aspects of CTF traces

- Move the "channel" aspect from LttngKernel to CtfTmfTrace
  (it can apply to any CTF trace).
- Add a CPU aspect for CTF traces.

CTF events know the CPU they were taken on (previously saved in
event.getSource()). Now we can define an aspect to display it
in its own column in the event table.

Change-Id: I603cfd4cc4ca61964ec59ea17293900e7aa1f42a
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
tmf.analysis: Restore the "getCPU" for data-driven analyses

XML data-driven analyses used to use ITmfEvent.getSource() to get
the event's CPU. This was misleading, because trace types were free
to define "source" as something other than CPUs.

Now instead use a CpuAspect to get the CPU of an event. This
should restore support for getting the CPU of CTF traces, as it
did before.

Change-Id: I88437b4a419e81aef36f2aa5298ff54f87242b23
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
tmf: Make ITmfTrace.getEventAspects() @NonNull

It's easier to deal with empty collections than dealing with
null/non-null references (for Collection.addAll() and such).

Change-Id: I9e8d0091e099027b5da0c15881b73130b4ef2e9d
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
tmf: Add a "Trace" Event Table column for experiments

Also reworked some internal methods in TmfEventsEditor to not return
a table object directly, but rather just a set of event aspects.
This way we can add this "Trace" column only for experiments.

Change-Id: I21536cd11da28f30b1f822a495cd06a4d922064c
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
WIP tmf: Remove filter IDs, use criteria instead

This reworks the Filter View and Event table to store/use
event criteria, instead of custom filter ID strings.

This allows filtering on any criteria without having to define
a specific Filter ID beforehand (should then work with user-
defined criteria).

Change-Id: If28441152645fbe8fd7bff7f27b1b84053b16925
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>