Add text-profile support for multiple ICs

Text profile inline-cache support was limited to methods with only a
single invoke. This extends support so it is instead based on the
receiver type and supports an arbitrary number of invokes. It does
assume that all invokes of the same receivers should have the same
ICs. This enables us to create text profiles that can survive most
common edits to the underlying java language files.

IC lines are of the following format

<<CLASS_GROUP>> := {CLASS}(,{CLASS})*
<<IC_GROUP>> := \[{CLASS}{CLASS_GROUP}
<<IC_LINE>> := {PROFILE_FLAGS}{CLASS}->{METHOD}\+{IC_GROUP}*

This means a typical line might look like:

```
HLTestInline;->inlineTriplePolymorphic(LSuper;LSecret;LSecret;)I+[LSuper;LSubA;,LSubB;,LSubC;[LSecret;LSubB;,LSubC;
```

Note that old style single-invoke IC lines are still supported as
well and their format has not changed.

Updated --dump-classes-and-methods to dump ICs using this format. Note
that it will combine ICs for different pcs with the same target so it
is possible to construct a profile where the 'profile -> dump ->
profile' operation is not idempotent. Any profile coming from a
text-dump will be idempotent under this transform.

Test: ./test.py --host
Bug: 168941430
Change-Id: I69ba3b312caa7ca454487aaeb49862e393de3a4a
10 files changed