Support aggregation over association sources per process

Process state association tracks the state via the bindings between
the source and the destination processes, there could be overlaps
from the timeline wise over these bindings, hence the exact duration
that a source process binds to a destination process is unknown.

Now add the support of this, by tracking the association sources per
process, the state changes of these sources will be driven by the
changes from individual source state per association.

The output of 'procstats dump -a; will include a new section
"Aggregated Association Sources" per process.An example:

  * com.android.providers.contacts / u0a122 / v30:
      Process android.process.acore (multi, 2 entries):
        [......]
        Aggregated Association Sources:
          <- com.android.bluetooth/1002 (com.android.bluetooth):
               Active count 271 (ImpFg): +1m0s849ms / 9.2%

Also updated the logic of pulling the procstats data from stastd to
use this new data structure.

Bug: 183101565
Bug: 186438656
Test: atest ProcStatsValidationTests
Test: atest ProcessStatsDumpsysTest
Test: atest CtsIncidentHostTestCases:ProcStatsProtoTest
Test: atest CtsStatsdHostTestCases
Test: Manual - compare statsd proto dump vs. dumpsys procstat -a
Change-Id: I9bf9ba7565761ae3d42046ed4886c8d17f6c18b3
3 files changed