Allow to use a different Set class when computing the diff between two snapshots

Fixes #5 : Now, we may set a different SetClass to use when calculating the diff between two snapshots

- [x] Add a `SetInterface`
- [x] Alter AbstractSnapshot to declare a `setClass` property
- [x] Alter Set to add some protections while the set is not computed yet
- [ ] Fix the tests