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.
This commit introduced a lot of changes and seems to have caused a few
issues, including breaking crc32 generation. Revert it for now with the
intention to reimplement some of the improvements.
This reverts commit 9d7600df51.
If we are using C++, we might as well use scope-based memory management
for these things, cleaner and less error prone. Also removed
unnecessary gotos.