New functionalities for AnimatorSet: Reverse, Seek

This CL adds reverse and seek to AnimatorSet's capabilities.

Structural changes:
1) Child animators are now being pulsed by AnimatorSet in a more
   timeline manner, as opposed to the old listener based style.
   This timeline based approach avoids the time offset in between
   sequential animations, and therefore produces a more accurate
   overall duration.
2) Timeline is done by representing start and end of each child animator
   in two separate events. All the events are then sorted based on the
   time they happen, such that it's clear what should happen in between
   last frame and the new frame (i.e. which animations should start
   or end).

Test: CTS (in the same topic branch)
Bug: 30993532

Change-Id: If1dc6e8dbc93a4bf5ade8c5b0dcf43d3ee6ba7b5
8 files changed