Split ChangeReason and decouple it from Observer

Observer is flexible to be used for other scenarios.

Bug: 325144964
Test: atest SettingsLibDataStoreTest
Change-Id: I8a8ce690edee37bdb1ba20ce06a508fbdddb2c15
9 files changed