Lidgren.Network performance patch.
The reliable message handling loop was very expensive.
It was wasting a lot of memory bandwidth by iterating over big structs while in almost all cases only checking one of the fields for null.
Also, usually there are no reliable messages in that buffer at all.

A single ulong now stores up to 64 reliable message "used" flags.
This also allowed a very significant early out check in front of the expensive reliable message handling loop.
Lidgren.Network performance patch.
Iterating over m_sendChannels frequently was very expensive since the size is hard-coded to 99 (which is difficult to change) and usually only very sparsely populated.
m_usedSendChannels and m_usedSendChannelsCount were added.
m_usedSendChannels has the same size as m_sendChannels, but is repopulated in correct order every time a channel is added.
All m_usedSendChannelsCount channels lie at the beginning of m_usedSendChannels and thus are efficient to traverse.
Repopulating m_usedSendChannels is not time critical and in the worst case as slow as the previous solution during the Heartbeat.

Minor other optimizations were also added.
Merge branch 'master' of https://github.com/jbruening/PNet