C: Parser: Support parsing of c99 designated initializers

In case:

    int a[6] = { [4] = 29, [2] = 15 };
    struct point { int x, y; };
    struct point p = { .y = 3, .x = 2 };

Grammar change when c99 language feature is enabled:
old grammar:

    braced-init-list :: '{' initializer-list '}'

new grammar:

    braced-init-list :: '{' designated-initializer-list '}'
    designated-initializer-list :: designated-initializer (',' designated-initializer )*
    designated-initializer :: designator* initializer-clause
    designator :: '.' identifier
                | '[' constant-expression ']'

Task-number: QTCREATORBUG-1902
Change-Id: Ib99d6f553f8d0f50ba3eff86f3a2e86d73372426
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
QmlProfiler: Parse memory usage events

Change-Id: Id07449345f983d2f2cb2af67540732991f227f71
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: remove eventType and simplify nesting calculations

With only one category per model we only have one eventType per model
and thus we don't need to differentiate per type anymore when
calculating the nesting.

Change-Id: Ic42a1c5c056f3480b7842a57fbff66a5e907abfb
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Remove SingleCategoryTimelineModel

All models are single-category now, so we can merge that into the base
class.

Change-Id: I4eab43ac2b4a77402121f004097e51a29b379aa4
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Replace QStringList with QString in event data

We never have multi-string event data and dragging around the list
everywhere just adds noise.

Change-Id: I4c73543464abea01d342e3f0a296ed1b05ee2a88
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: get rid of hash strings

Using strings to identify equal events is terribly inefficient. By
keeping a global list of event types we can assign each event a
numerical type index and use that to compare them.

We can also avoid excessive string copying and data duplication by
referring to the global type list where event type information is
needed.

Task-number: QTCREATORBUG-11823
Change-Id: I837bd5d0f5395b0003002ef8dd278fb27679c65d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: remove useless signals

Sending a signal for every model when clearing or loading data is not
very smart.

Change-Id: Ifc81d74f6b7f93bcd6748a919dfb553050b8d725
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: remove "Source code not available."

This string crops up in far too many places where it's not supposed to
be. If we really need it we should add it to the views in the exact
places where we want it instead of writing it into the model.

Change-Id: I5f17a2aead7f6c2d42f485bf629baaf759e90547
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Save and load memory events in trace files

Change-Id: Id95a3adf2d97255f962cb16aa486a15cacc7c1d1
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Add missing file to qbs

Change-Id: I76e62856dba78d697e740c91ea956c5157f26ffe
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
QmlProfiler: Remove unused signal

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