HTTP/2 Priority Algorithm Restructure

Motivation:
The current priority algorithm uses 2 different mechanisms to iterate the priority tree and send the results of the allocation.  The current algorithm also uses a two step phase where everything is traversed and allocation amounts are calculated and then everything is traversed again and everything that was allocated is sent.

Modifications:
- DefaultHttp2OutboundFlowController will allocate and send in the same looping structure.
- The recursive method will send only for the children instead of itself and its children which should simplify the recursion.

Result:
Hopefully simplified recursive algorithm with consistent tree iteration approach and 1 less iteration pass.
I think this condition is just an extension of the first loop logic. The logic is we send as soon as we know the child cannot be allocated any more we send.  This condition can happen in a few different ways:
1) In the inner loop when we allocate to the child it doesn't want to send any more.
2) The child was allocated some in the inner loop but still wants to send more, and so it is put back into the child list in hopes one of the peers will not use their fair share.  However the window became exhausted and so it cannot possibly be allocated more resources.