Temporary disconnects for Bluetooth profiles.

Allow apps to request that a Bluetooth profile be temporarily
disconnected. That profile will remain disconnected until the request is
lifted, or until the requesting process dies. Multiple apps may make
requests, and the profile will stay disconnected until all such requests
are removed or have their processes die.

In the event of an unexpected crash or user switch, the disconnected
profiles will be persisted to Settings.Secure. When that user starts
again, the requests will be reverted and the profile will be re-enabled.

Test: Manual tests (request, release, app crash, user switch, reboot).
Bug: 116226107
Change-Id: I67883374f36aae6154e03d31756a75552e2c6faf
Fixes: 116226107
8 files changed