added runtime flag "opt" which does a small UDP optimization and surrounds the changes in this merge
stopped allocating message objects for each send and instead allocate one and re-uses it
does not repopulate the buffer for changes that only affect the flow id, sequence number, and time, only repopulates the buffer for changes are more significant