Added CoalescedPermissionMessages to ManifestPermissions
Added a new type, CoalescedPermissionMessage, which represents a
permission message made up of 0 or more permissions. Also started a
refactor to move IDs out of APIPermission::ID and PermissionMessage::ID
and into their own common class.
Added a new method GetPermissions() to ManifestPermission, which allows
manifest permissions to specify their own custom permissions (and hence
custom messages) for apps with that permission. Updated all 5 subclasses
(automation, bluetooth, sockets, UI overrides hanlder and the mock
manifest).
Also added another FilterHostPermissions() method to ExtensionsClient
that can create CoalescedPermissionMessages.
BUG=398257
Review URL: https://codereview.chromium.org/
750353003
Cr-Commit-Position: refs/heads/master@{#307630}