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.
Not sure if it is better or not in this case, but for reference you can go:
```
(n <= max.n).option(new OldIdentifier(n))
```