Group TLV refactors

After the group packet functionality was added I felt it was a good idea to go through the existing code and clean up some of the bits that were adding groups of tlvs as chunks. At the same time I abused the new support for arbitrarily nested TLVs. The code is a lot safer as well due to the fact that we're making more use of "api" calls and avoiding custom code which mangles values into fixed sized buffers.

This PR contains a number of these adjustments. Functionality should remain very much the same as before except that in a few cases the structure that is sent across the wire is a little more intuitive and contains a bit more information. MSF needs to be updated as well (there is an associated PR).

Verification of this PR should be done in conjunction with the MSF PR, and hence instructions for what to check can be found over there.