Rework TCP FastOpen configuration, and connect it to the network service

TCP FastOpen used to be enabled by triggering a global probe and
providing a global setting, which were then used to determine if
requests should try to use TCP FastOpen, and if they actually could use
it (One bool for each).

This CL refactors the enabled boolean to be a property of
HttpNetworkSession. The probe is still done globally, but it's now
triggered lazily at the socket layer, rather than having to be
explicitly run by the embedder. Since it's a non-blocking probe,
that means that until the probe is complete, requests won't use
FastOpen, even if enabled.

Enabling the bool on HttpNetworkSession is now hooked up through
the NetworkSessionConfigurator, which means that TCP FastOpen is
will now work when the network service is enabled as well.

Bug: 750417
Change-Id: Iec20e24b75ef166906d97660edd9f7b2d7d28a17
Reviewed-on: https://chromium-review.googlesource.com/663439
Commit-Queue: Matt Menke <[email protected]>
Reviewed-by: John Abd-El-Malek <[email protected]>
Reviewed-by: Jana Iyengar <[email protected]>
Reviewed-by: Ryan Hamilton <[email protected]>
Cr-Commit-Position: refs/heads/master@{#501965}
14 files changed