Made IsValid a const function.
Use PacketKey helper class for key based queries and challenge response. Use PacketCommand for query responses.
Simplified template.
Added all command packets and test case skeleton. Doesn't compile.