OFConnectionManager: drop more types of messages when the write buffer partially fills

Refactored to classify certain message types as "noncritical" and drop them
when reaching a high water mark.

Previously only OF_FLOW_REMOVED and OF_PACKET_IN would be dropped. This adds
OF_BSN_FLOW_IDLE, OF_BSN_ARP_IDLE, and OF_BSN_PDU_RX_TIMEOUT.
OFConnectionManager: convert write queue list to a ringbuffer

This gets rid of the linear list append and the extra allocation/free.
OFConnectionManager: only set write-ready for the first message in the write queue

The CXN_WRITE_READY macro hides a slightly expensive function call.
OFConnectionManager: write as many messages as possible to the socket

The previous limit of 32 messages per tick was creating a bottleneck. I think
that in producer-consumer scenarios like this we should give the consumer
priority and not limit how much it can consume. Otherwise the work done by the
producer will be wasted when the message is dropped.