Simplify message handling, improve ping, fix fake connects.

Ready to merge

This is mainly just a refactor of the receive methods, to make it clear how the messages come into the system.

It uses EndReceive to directly receive the message, instead of doing whatever was happening before :-/

This also changed the way ping works. It no longer has a timeout because it sends the send time in the message, similar to how my NTP messages work.

The protocol bump was for ping only, the receive method is a drop in replacement.