Remove HeadsUpManagerPhone from some variants

HeadsUpMangerPhone is only needed in phones and car, but it is
included in all variants. This currently blocks development of the
new shade domain layer, because we'd need to spend time updating the
variants to include it when we integrate with HeadsUpManagerPhone.
I tried cleaning up some dependencies in order to prevent variants
from wanting it in the first place, but that change wasn't viable.
This change extracts an interface and binds a no op impl in the
variants that don't need it and HeadsUpMangerPhone in those that do.
It also changes the class to a singleton and makes the constructor
injectable to simplify its binding.

Bug: 302508896
Test: build and presubmits are sufficient
Change-Id: Ife8dc4aececcc1d1c15c61fba6e2c129fb66e963
1 file changed