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

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
- [x] Fix the tests
- [x] Counter the BC Break on the `Set` class

Some BC Breaks were introduced though (like the suppression of the constructor of the `Set` class and the need to call explicitly the `compute` method on the set)

Fixes #5