gvpack: replace CDT pair dictionaries with 'std::multiset'
This is intended to be a non-functional change with a number of benefits:
1. This is C++ code, so no need for custom CDT data structures. The STL
equivalents are likely more optimized, better understood by the compiler,
and more familiar to human readers.
2. We avoid the lib/common allocation routines (`NEW` macro and friends). Now
allocation failures naturally propagate outwards as `std::bad_alloc`
exceptions without any custom handling.
3. Related to (2), we no longer need to manually free any of these objects.
RAII takes care of all of this.