Support speculative pre-connection to search URLs

Implement several flavors of TCP/IP speculative preconnection
under a command line flag (not yet on by default).

The first area of preconnection takes place when a user types
a query into the omnibox, as we preconnect to the search service
when the omnibox suggests it is going to do a search.

The second area involves subresources, such as images.
When a navigation takes place, and we've seen navigations
to that domain/port before, and the history-based 
probabability that we'll need to make a connection to
a second site (host/port) is sufficiently large, then we
preconnect to that second site while we are still connecting
to the primary site (and before we've gotten content from
the primary site.

We also fall-back to mere DNS pre-resolution of subresource
hostnames when the probability of a connection to the
subresource is not high enough.

BUG=42694
r=pkasting,willchan,mbelshe
Review URL: http://codereview.chromium.org/1585029

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47479 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 55a75ce7..def903d 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1644,6 +1644,8 @@
         'browser/net/metadata_url_request.h',
         'browser/net/passive_log_collector.cc',
         'browser/net/passive_log_collector.h',
+        'browser/net/preconnect.cc',
+        'browser/net/preconnect.h',
         'browser/net/referrer.cc',
         'browser/net/referrer.h',
         'browser/net/resolve_proxy_msg_helper.cc',