Merge ChannelOutboundBuffer.failUnflushed() and recycle() into a single method and make sure it is run later on reentrance

- Previously, failUnflushed() did not run when inFail is true, which made unflushed writes are not released on reentrance.   This has been fixed by this commit.
- Also, AbstractUnsafe.outboundBuffer is set to null as early as possible to remove the chance of any write attempts made after the closure.
Remove Arrays.fill(..., null)

.. because we can just set each element to null while looping
[#1623] Fix javadocs for ChannelGroup
[#1639] Fix bug where SpdyOrHttpChooser may not buffer data correctly during protocol detection
Merge remote-tracking branch upstream/$:{upbranch}