Rework interactions between AvbOps and AvbABOps.

Use pointers instead of aggregation and introduce a |user_data| field
that can be used for platform-specific resources. This makes it easier
for bootloader vendors since they don't have to "subclass" AvbOps or
AvbABOps - instead they can just point to their platform-specific data
using the |user_data| member in AvbOps. Additionally, this change
makes it possible to add other libraries on top (such as libavb_atx)
whilst still using both libavb and libavb_ab.

Bug: None
Test: Unit tests pass.
Test: Manually tested on UEFI based bootloader.

Change-Id: I72963cde94fdc922060e3cc42d7f360f6da01bb0
7 files changed