* Greatly reduce the complexity of the LWKT messaging and port abstraction.
Significantly reduce the overhead of the subsystem.
* The message abort algorithm has been rewritten. It now sends a
separate message to issue the abort instead of trying to requeue
the original message. This also means the TAILQ embedded in the
lwkt_msg structure can be used by unrelated code during processing
of the message.
* Numerous MSGF_ flags have been removed, and all the LWKT msg/port
algorithms have been rewritten and simplified. The message structure
is now only touched by the current owner in all situations.
* Numerous structural fields have been removed. In particular, the
fields used for message abort sequencing have been simplified and
we do not try to embed a 'command' field in the base LWKT message
any more.
* Clean up the netmsg abstraction, which is used all over the network stack.
Instead of trying to overload fields in lwkt_msg we now simply extend
the base lwkt_msg into struct netmsg. The function dispatch now takes
a netmsg and returns void (before we had to return EASYNC), and we no
longer need weird casts.
Accept/connect message aborts are now greatly simplified.