Refactor FUSE flag precedence resolution

We have two FUSE flags: settings and native:

settings: sys.fflag.settings_fuse
---------------------------------
The settings flag allows us defer flag changes while the device is
running till the next boot. These changes can come from
server side flag flips or user initiated flag flips.

native: persist.sys.fuse
------------------------
The native flag is what components (init, zygote, vold, installd,
system_server) actually read to determine behavior. This flag doesn't
change during a boot and if changed should be followed by a reboot so
all components see a consistent state of the flag.

The resolution at system boot of what final device state to take
effect, FUSE on or off was 'needlessly complicated'. Mostly by the
fact that in some rare cases the native flag could be empty.

The 'empty native flag' issue is fixed in
Ie475e0bb82614626803f4e88b1e9d29c8a969f17 and we now simplify the
precedence resolution

Test: Device boots and flags flip correctly
Bug: 135341433
Change-Id: I903b104e2be282e6d4641d15284d4ebd780226ca
1 file changed