kernel - Improve TCP socket handling at high speeds

* Add M_SOLOCKED to mbuf->m_flags.  This flag prevents sbcompress()
  from collapsing more data into a mbuf.

* Rewrite sorecvtcp() (NOTE: soreceive() could use similar treatment).
  Use M_SOLOCKED to freeze mbufs in the sockbuf with the rcvtok held,
  then do the uiomove() loop WITHOUT the rcvtok held, then finalize
  the disposal of the mbufs with rcvtok held.

  This greatly reduces contention on rcvtok against the netisr threads
  when reading large amounts of data at once and reduces cpu overhead
  for netisr and user network threads.

* Change the default transmit ssb_lowat from ssb_hiwat / 2 to ssb_hiwat / 4.
  The (previous) default maximum socket buffer size was 256KB.  The default
  lowat reduced the effective TCP transmit window to ~100KB.  This can cause
  severe buffering issues on GiGE links when multiple TCP streams are being
  routed to the same cpu.

  With this change the default max send buffer is ~180KB or so.

* Change the default kern.ipc.maxsockbuf from 256KB to 512KB.  This
  primarily effects auto-sizing of tcp buffers which in turn effects
  most TCP connections.

  This coupled with the hiwat fix greatly improves transmit throughput.

* Add more debugging info to the tcp inflight code.
netgraph7: Factor out and inline item reference counting code.

* Netgraph7 assumes that nodes synchronously consume the items passed to them,
  i.e. either 1) immediatly drop the item or 2) immediatly pass the item to the
  next node.

  The previous assumption is not true for nodes that have their own internal
  item queues and defer the processing of the item.  Such nodes can use these
  routines to prevent the items from being freed too early.

* Move the apply callback check into the item reference release code.