net channels: don't drop packet when the channel is full

classifier::post_packet() uses net_channel::push() to queue a received
packet on the appropriate net channel. However, push() can return false
meaning the channel is full, and we neglect to check it.

By not checking if push() succeeded, and returning "true" from post_packet
anyway, we basically drop this packet. This will be bad for TCP performance
because it will lead the remote side to reduce its transmission rate.
Even worse, we don't even drop the packet correctly - we never free the
dropped mbuf, and its memory is leaked.

With this patch, when the net channel is full, post_packet() returns
false which leads the caller (net::receiver()) to use the normal TCP
stack on this packet. The TCP stack (tcp_input()) will consume the
packets queued in the netchannel first (tcp_flush_net_channel()) and
then the new packet.

Reviewed-by: Avi Kivity <avi@cloudius-systems.com>
Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>