csharp: Cleanup whitespace according to MSVS 2012
csharp: Remove BinaryReader/BinaryWriter

They are not neccesary.
csharp: Workaround Windows Phone's lack of the Semaphore type

Use a BlockingQueue instead.
csharp: Fix typos in Windows Phone specific code
csharp: Ensure that closing the Socket aborts a pending read on Windows Phone

Otherwise a IPConnection.Disconnect call will wait forever for the receive
thread to exit, as it keeps blocking on a read call.