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.

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>