Refactored packet handling to allow for serialization

The packet class is now sealed allow for serialization across the
appdomain. Everything is programmed against the IPacket type and
IPacketWrapper type