Make content::PermissionManager a delegate of PermissionController

One-pager describing this refactoring: https://goo.gl/24gkCb

Today, `content/` layer provides `permission_manager.h` interface that
is supposed to be implemented by embedders and simultaneously used
as API in `content/` layer. This leaves us with no place in content/ layer
where we can put DevTools instrumentation.

This patch separates content API from embedder interface. With this
patch, `content/` layer provides 2 interfaces:
- content::PermissionController - content-level API to manage permissions
- content::PermissionManager - interface to be implemented by
embedders. This is a delegate for content::PermissionController.

This design enables DevTools to handle and override content permissions through
DevTools protocol. The functionality will be encapsulated in
PermissionController class.

There's exactly one PermissionController for each BrowserContext.
If embedder doesn't implement PermissionManager, then
PermissionController rejects all permission requests.

In a follow-up:
- rename `content::PermissionManager` into `content::PermissionControllerDelegate`.
- rename `BrowserContext::GetPermissionManager()` into `BrowserContext::GetPermissionControllerDelegate()`.
- rename `TestBrowserContext::SetPermissionManager()` into `TestBrowserContext::SetPermissionControllerDelegate()`.

R=dgozman
TBR=sdefresne, tobiasjs, slan, thakis
BUG=631464

Change-Id: I5f6f1ea5b28e284c462a5055d9b072f12f30ce19
Reviewed-on: https://chromium-review.googlesource.com/1111340
Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
Reviewed-by: Mounir Lamouri <mlamouri@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574691}
32 files changed