Land Recent QUIC Changes.

Refactor QuicSentPacketManager to move loss detection into a separate
static method in preparation for moving loss dection into a separate
interface.

Merge internal change: 61764458
https://codereview.chromium.org/164913008/


Refactor to move the packet_history_map_ from the QuicSentPacketManager
to the InterArrivalSender.

Merge internal change: 61747951
https://codereview.chromium.org/171233003/


Add const to methods in ReliableQuicStream

Merge internal change: 61745963
https://codereview.chromium.org/171743002/


Ensure that QUIC packets are always written in sequence number order by
not re-consulting the congestion manager after it allows the packet to
be written once.

Merge internal change: 61608609
https://codereview.chromium.org/171683003/


Remove return values from OnCanWrite methods in favor of explicit
HasPendingWrites() calls. The important difference is that
QuicDispatcher will no longer insert a writer into a blocked list simply
because the socket is not blocked. This fixes the bug.

Ran all tests in internal server tests a thousand times, looks stable.
I was trying to hammer this out in the internal streamer loadtest, but
the testing framework is having issues and I don't have an ETA on fixing
that.

Fix infinite loop in QuicDispatcher.

Merge internal change: 61601805
https://codereview.chromium.org/169223007/


This brings us closer to implementing flow control. Now WINDOW_UPDATEs
and RSTs are plumbed through to the appropriate streams, but no behavior
change yet.

(minor) Implement QuicConnectionVisitorInterface in various places, no
behavior change.

Merge internal change: 61597640

nit: Fixed couple of indentation with DVLOG(1) lines.
https://codereview.chromium.org/171653002/


Add bytes_sent and nack_count to UnackedPacketMap's TransmissionInfo,
allowing for the movement of the packet_history_map into the
InterArrivalSender.

Merge internal change: 61547066
https://codereview.chromium.org/171543002/


Two minor bug fixes in Reno congestion control that (i) caused sender to
have a congestion window of 1 packet more than it should at the end of
loss recovery, and (ii) required 1 more ack than necessary for
congestion window growth while in congestion avoidance.

Merge internal change: 61531359
https://codereview.chromium.org/170673004/


Fix a use after free bug caught by asan in QUIC's OnPacketSent method.

Bug was introduced in cr/61457571.

Merge internal change: 61525312
https://codereview.chromium.org/171513002/


Double checking the kernel docs, it looks like packets_dropped is a
uint32. Which really makes more sense anyway.

http://www.spinics.net/lists/netdev/msg268644.html

Fixing the type of a kernel-provided counter from int to uint

Merge internal change: 61517449
https://codereview.chromium.org/171493002/


Remove unused SetMaxPacketSize from QUIC's SentPacketManager and send
algorithms.

Merge internal change: 61467515
https://codereview.chromium.org/166273006/


Change QuicConnection to no longer send acks when the peer's least
unacked needs to be raised, and instead only bundle them with outgoing
data.

Merge internal change: 61459311
https://codereview.chromium.org/171363004/


Replace PendingPacket with QueuedPacket to simplify QuicConnection's
packet writing code.

Merge internal change: 61457571
https://codereview.chromium.org/171373003/


Break out the QUIC unacked packet map into a stand alone class.

Merge internal change: 61357541
https://codereview.chromium.org/171243002/


Fixing one case we could ostensibly end up with multiple session
timeouts and adding logging so we can debug better if we see it again.

Flag protected.

Fixing a potential session closing bug and adding better logging.

Merge internal change: 61334956
https://codereview.chromium.org/171033003/

R=rch@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@252298 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 252298