Rework profile handling to address the following issues:
- When app specific profiles are enabled, the perf service silently
changes the profile to BALANCED when the user revisits settings.
The service and Settings UI still show whatever pref the user had
selected. The user is now unable to change the setting to BALANCED.
The perf service ignores the change because the current profile
(selected by app profiles) did not change.
- When low power mode (battery saver) activates or deactivates, the
user selected profile is overwritten.
All runtime decisions regarding active profiles have been consolidated
in to a single applyProfile() function that handles low power mode,
user and app-specific profile rules.
App specific profiles are applied only if the power profile is
BALANCED.
setPowerProfileInternal has been changed to save the user pref even if
the active pref is unchanged.
Fixes SAMBAR-1088
Change-Id: Iac658959130f08452f5e41ce3339fe4603ac474e