Collection snapshot

Should fix #19 and probably fit with #21. But it is not really recursive, as there's no guarantee that an array with numerical indexed elements *are* collections, and if they are, if they have the *same* type of primary key.

- [x] Add a ward against trying to normalize a data that is already a snapshot
- [x] CollectionSnapshot
- [x] Unit Tests
- [x] Use Symfony's `PropertyAccess` component
- [x] Allow to pass some options into the `CollectionSnapshot` (like a directive to tell the snapshot which sub-snapshot to use for each values of the collection)