Added the notion of "group packets"

A group packet is a special packet that is to be used as a group of TLVs that will live under another packet. Using this functionality means that we can easily nest groupings of data to arbitrary depths, which wasn't something we were able to do before easily.

The MSF side is easily capable of handling this scenario, but this side had always been lacking.

The clipboard dump code has been updated to show how this can be used.

This is based on a chat I had with egypt tonight, where we were both lamenting on the inability to have arbitrary depths of groups. This seems to solve it well enough without having to create a stack of code specific to group hierarchies.

Feedback/discussion very much welcome!