QmlProfiler: Sanitize the signal exchange between models a bit

The model manager should only set its state to 'Done' if all models are
actually done. When that is the case it can safely emit dataAvailable,
too, freeing us of the need to apply a heuristic to the progress
percentage. In order to have a unified interface to the completion of
model processing an abstract base class for QML and V8 models is
introduced.

Task-number: QTCREATORBUG-11466
Change-Id: Id89c7ef5e24004baab7f37ee5486b69e7611aee0
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Make the progress bar somewhat nicer.

Allow adding a weight to certain tasks so that the movement of the bar
gets smoother and update the progress from more places.

Change-Id: Ifb8331dc77116cc0464b3970cd6344fbbeacec41
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Remove some useless signals and QML variables

We don't want to emit a signal for each event being added. That's
expensive and doesn't serve any purpose. We also don't have to save
the availability of data in QML as it isn't used anywhere.

Change-Id: I32db06a1955a7cfd6b569f50b81bf5278333b622
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Don't throw an assert if app is killed while profiling.

Without this you get lines like this on the console:

SOFT ASSERT: "m_state == Done || m_state == Empty" in file
[...]/qmlprofilermodelmanager.cpp, line 62

Change-Id: Ia3fb98cd5e9fb683e3265d0fd3ed1ca99784270d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Unify handling of category labels

Change-Id: I32ab2e354d3e45653e8dcb2cf8b0195d199786a6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: eliminate redundant categories() methods

Change-Id: I3a85322cc583de37f1cc4eb256e3382a92c5c179
Reviewed-by: Kai Koehne <kai.koehne@digia.com>