moved SubPacket to packet.subpackets; abstracted all parsing out to subclasses of SubPacket