Update dream state controller to hold weak ref to callbacks.

This avoids memory leaks caused by callers of this state controller not
properly removing callbacks.

This change also creates a WeakReferenceFactory util so that weak
references may be cleared in tests.

Bug: 309396474
Flag: NONE
Test: atest DreamOverlayStateControllerTest
Change-Id: If8f3331a8d943d18bb305c73c8bc29f4777cb97a
8 files changed