[headless]

Public API changes:

- [incompatible] Removed default browser context from HeadlessBrowser and HeadlessBrowser::CreateWebContents methods. Now BrowserContext should be created explicitly.
- [incompatible] ProtocolHandlers cannot be set in HeadlessBrowser::Options due to being move-only and not reusable across different BrowserContexts.
- Added more configurable options to HeadlessBrowserContext.
- Now user data directory can be set.
- HeadlessBrowser::Shutdown now closes all WebContents.
- All WebContents associated with a HeadlessBrowserContext are now deleted when user deletes a BrowserContext.

Internal library changes:
- Added HeadlessBrowserContextOptions class, allowing for more customization for BrowserContext and for fallback to default browser-wide settings from HeadlessBrowser::Options.
- Removed SetOptionsForTesting. Now BrowserContext should be created for this purposes.

Misc:
- Made linter happy.

BUG=546953,624837

Review-Url: https://codereview.chromium.org/2181413002
Cr-Commit-Position: refs/heads/master@{#409527}
32 files changed