Do not suppress referrers for '<a ... rel="noopener">'.

The current implementation of 'noopener' correctly split the referrer
and opener states in Blink, but missed a spot higher up the stack where
the two were still conflated. This patch fixes that issue, adds tests
to ensure we don't regress, and refactors the Blink-side code a bit so
that we're no longer passing the data around twice.

BUG=618532
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation

Review-Url: https://codereview.chromium.org/2058693002
Cr-Commit-Position: refs/heads/master@{#399391}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 3cb56ac4..83f0007e 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2063,9 +2063,7 @@
           params.user_gesture, &was_blocked);
     }
     if (!was_blocked) {
-      OpenURLParams open_params(params.target_url,
-                                Referrer(),
-                                CURRENT_TAB,
+      OpenURLParams open_params(params.target_url, params.referrer, CURRENT_TAB,
                                 ui::PAGE_TRANSITION_LINK,
                                 true /* is_renderer_initiated */);
       open_params.user_gesture = params.user_gesture;