[headless] Do not give ownership of HeadlessBrowserContext to user.

Public API changes:
- HeadlessBrowserContext::Builder::Build now returns raw pointer instead of unique_ptr. Lifetime of HeadlessBrowserContexts is managed by the browser now.
- Added HeadlessBrowserContext::Close method to give used the option to delete HeadlessBrowserContext.
- Added HeadlessBrowserContext::Id and HeadlessBrowser::GetBrowserContextForId methods for BrowserContext identification.

Internal changes:
- HeadlessWebContents are owned by HeadlessBrowserContext.
- HeadlessBrowserContexts are now owned by HeadlessBrowser.
- Instead of browser having a weak pointer to HeadlessDevToolsManagerDelegate opposite happens: HeadlessDevToolsManagerDelegate weakly references HeadlessBrowser.

BUG=546953

Review-Url: https://codereview.chromium.org/2210323002
Cr-Commit-Position: refs/heads/master@{#409816}
20 files changed