The only C++ was for handling discovering and iterating over the
partitions PER block device, this was implemented in a really
overcomplicated way.
Simplify things, port everything over to c11 and drop the libstdc++
requirement entirely.
Allocate gpt_disk on stack, allocate when needed, rather than multiple
times for every partition.
Huge code cleanup, rerun clang-format, etc
Many changes here inspired by Eric's earlier work.