Remove dead code
Eliminate type header

Previously automatically serialized types (Write (object)) would include
their type names in a "type header" once with an ID#. This was to optimize
repeat uses of a type in the same messages drastically shrinking the
message size. Tempest's internal protocol itself used this serializing RSA
public keys.

Since serializing just any object is no longer supported, this is really
no longer neccessary, it just complicates the message
serialization/deserialization process.

As a side effect, the exchanged public keys in the handshake must no
longer rely on this mechanism and instead now have a defined
serialization/deserialization process. This has the side benefit of no
longer requiring a .NET type to actually connect with a Tempest end point.

Also included in this change set is removing any code that might
potentially serialize a private key. If this behavior is needed, it will
have to be implemented manually.
Add PartialMessage
Add simpler BufferMessages overload
Only create global mqueue when needed
Handle received partial messages
Update some headers
[UDP] Don't crash on random messages
[UDP] Register PartialMessage
[UDP] Send partials
Fix NREs sending while disconnecting
[UDP] Improve receive robustness
[UDP] Cleanup partials
[UDP] First partial use original MID

If we don't send a message with the original ID, the reliability queue on
the other end is going to sit waiting for it.
[Tests] Fix random messages
[UDP] Fix partial message
[UDP] Actually sends to pendings
[UDP] TrySetResult on failure instead of Set
[UDP] Use UTC for pendings
[UDP] Fix resending