WIP: Capture per-feature counts for snapshot

This isn't quite finished. I'm tempted to wait until @domdere has finished with adding a new metadata file and storing the values on save once. Unless we think this is worth doing sooner.
We should make this exist some where in ivory given that we will be doing this a bit. Just gives you the automatic law spec via `encodedecode[SnapshotSpec]`

```
  def encodedecode[A: EncodeJson: DecodeJson: Arbitrary: Equal] =
    forAll(CodecJson.derived[A].codecLaw.encodedecode(_))
```