Snapshot metadata

This isnt for merging yet, just WIP,

Bit of a slow start, but figured while I am still finding my way around the codebase i'll raise this so ppl can peek at the progress more conveniently and give me feedback as i go.
This will largely become obsolete when Mark finishes his planning his work.

But in the short term can we share this logic with `SnapshotMeta` (or just move it here). Apologies if I'm missing something.