Rewrite GPT: Decouple header and partition table parsing

Closes #1