headless: Introduce a browser context

A headless browser context can be used to isolate different WebContents
from one another. Each context has a separate cache, cookies, local
storage and other profile-related data.

This patch also adds a way to create a HeadlessWebContents using a
specific browser context instead of the default one. This can be used to
isolate tabs from one another.

Design doc: https://docs.google.com/document/d/1XAKvrxtSEoe65vNghSWC5S3kJ--z2Zpt2UWW1Fi8GiM/edit?pref=2&pli=1#heading=h.7r3ycehq63g2

BUG=546953,617931

Review-Url: https://codereview.chromium.org/2043603004
Cr-Commit-Position: refs/heads/master@{#398853}
21 files changed