support for zero windows

+ receive/advertised window should be based on input buffer,
not output buffer!
+ receive/advertised window should only be 0 if the
application has data it may read to flush the buffer
and allow the window to open again
+ when application drains an input buffer with a zero
receive window, adjust the receive window and send an
ack to advertise the new window
+ when processing packets, accept new window updates from
duplicate acks
+ send window should be 0 if the advertised window was 0
+ congestion window should never be 0
+ updated congestion window type to gunit32
+ all congestion window updates now happen in
_tcp_updateCongestionWindow

fixes #139