Add a NavigationHandle class to content/public/browser

This CL adds a new class, NavigationHandle, to the public content API. that is
used to keep track of information pertaining to a single navigation. The CL
also introduces four new methods to WebContentsObserver: DidStartNavigation,
DidRedirectNavigation, DidCommitNavigation and DidStopNavigation. All of those
provide a NavigationHandle to the implementer for further details about
navigations happening in the WebContents. See the design doc for more info:
https://docs.google.com/a/chromium.org/document/d/1ICLLQoC9EsZ-bWH4ZKRhPCIoZKn6pOj02SlGl6SKH6Y/edit?usp=sharing.

This CL also rewrites the CaptivePortalTabHelper to make use of the newly
introduced interfaces.

BUG=504347

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

Cr-Commit-Position: refs/heads/master@{#341342}
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 58aefe1..719b419d 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -508,6 +508,10 @@
 
   // NavigatorDelegate ---------------------------------------------------------
 
+  void DidStartNavigation(NavigationHandle* navigation_handle) override;
+  void DidRedirectNavigation(NavigationHandle* navigation_handle) override;
+  void DidCommitNavigation(NavigationHandle* navigation_handle) override;
+  void DidFinishNavigation(NavigationHandle* navigation_handle) override;
   void DidStartProvisionalLoad(RenderFrameHostImpl* render_frame_host,
                                const GURL& validated_url,
                                bool is_error_page,