Add haptic composition API.

Not all effects will be thought of by system owners. By exposing the
underlying primitives we use to design effects we can enable our own
future development in an unbundled fashion while at the same time
providing the ecosystem more freedom to create novel and meaningful
haptic experiences.

This CL implements the fundamental parts of the APIs but doesn't yet do
a number of things (e.g. intensity scaling, breaking up long delay
durations with NOOP primitives, etc.)

Bug: 139762802
Test: atest VibratorTest
      manual testing
Change-Id: I15d12f34137a81ca64390b4ef06927341b6ca1ac
8 files changed