Refactor Procon.Net (IClient)

Client property of GameImplementation has been moved to Game with it's
usage changed to IClient, just so client based data can be exposed
directly from a game object without needing proxy properties. Required
additional normalization of Packet to include a RequestId, just so some
of the refactoring didn't double up some work.
Moved PacketSerializer to interface

The class was almost completely abstract anyway. Just trying to remove
some of the generics to reduce coupling for game implementations
Removed generic from Procon.Net.Client

Now just uses the base Packet class through out the protocols and casts
to a more specialized packet class in the occasional locations that
require it. All of the main functionality in the base classes should
only need to know of the base objects in Procon.Net.* namespace.
Moved Frostbite packet queue to generic class

The functionality is shared between SourceClient and FrostbiteClient.
Moving the functionality out and cleaning it up has simplified the
process and allows for unit testing of the packet queue.
Added interface for PacketQueue for testing

Making the queues public to allow for testing
Changed PacketQueue to use concurrent lists
Added unit tests for PacketQueue
Completed coverage for PacketStream
Completed coverage for Packet
Renamed ConnectionAttemptManager

Something smaller and more descriptive of the classes task
Completed coverage for MarkManager
Packet Origin/Type now have attribute Flags
Moved sequence number handling to base client

Since this is used on source/frostbite it could potentially be used in
udp based protocols in the future. This just centralizes the process,
but does not isolate it to it's own class. It is after all, essentially
one line of code.
Added mocks and tests for Client/TcpClient