Introducing the Message Router

This class is going to be the first one that actually looks at the
contents of an incoming message. An application that is trying to work
with this library will have to register a protocol ID that it is
expecting. All messages that have this protocol ID will get forwarded to
the application and can be parsed further. The protocol ID is stripped
from the packet that is handed over to the application.

But this is just a stub yet ;)
Changing protocol IDs to be uint

Signed ints may be confusing to read or interpret, so we force the
protocol ID to be an unsigned 32 bit integer.
default values

If the MessageRouter is created without arguments, we assume that is
intended to listen on all interfaces and should use port 42337
Application interface and signaling added

I have created an Interface that all applications using the library havt
ot implement. It is holding the protocolID of the application and a
method that is called with incoming data. I also tried to trigger events
from the message router on an application, but it is failing due to the
false assignement of the integer representing the protocolID on the
receiver side.
Shifting the right way

System.Byte is of curse an 8 bit value...
Finishing the receive method

The protocol ID is now filled correctly. Thus the signaling is working.
Next thing to do would be to remove the protocolID from the payload and
just hand over necessary information to the user.
Remove the guard

we want to apply any protocol id to the message router. I first thought
about assigning the protocolID 0 (=0x00000000) a special meaning, but
this is restricting user interaction too much in my opinion.
PeerSocket constructor change

The peer socket is handling IO to and from the socket. This should be
contained completely in the PeerSocket class and be only configurable on
demand. So I figured I take the ioObjectCount from the constructor and
just initialize to a general purpose object count.
documenting the MessageRouter class

refs Net-4
Merge pull request #26 from 8Monkeys/ConnectionManager

Routing messages

Implementors of the IApplication interface can now get notified when messages have arrived for them. When the MessageRouter is set up, the user may also choose an EndPoint for the socket to listen to.

closes NET-4