Stop inheriting push notification permissions from regular to incognito

Normally, permissions granted in regular mode also apply to incognito.
This patch makes an exception for the notifications and push messaging
permissions, so that only blocks are inherited by incognito
(i.e. permission grants are no longer inherited).

This is because:
- Notifications are unusually dangerous to the incognito privacy
  protections, for example a minimized window might be revealed to a
  shoulder surfer by a notification.
- Push messaging is not currently supported in incognito, so if
  permission is granted in regular mode and carries over to incognito,
  but push is disabled, this would reveal that incognito mode is active.
- Even if we later support push in incognito mode, push messaging
  registrations made in incognito would often expire before any messages
  are sent (wasting server-side resources), thus it's best if users
  explicitly opt in to push messaging in incognito.
- Notifications and push messaging must behave the same in incognito,
  since push messaging is auto-granted by notifications permission,
  so otherwise a website might be able to determine that incognito mode
  is active by comparing these permissions.

BUG=479679,401439
TBR=finnur@chromium.org

Review URL: https://codereview.chromium.org/1442083002

Cr-Commit-Position: refs/heads/master@{#363514}
18 files changed