[WIP] Deep Snapshots

Refs #1 

This PR should be able to make a more accurate changeset. The objective is to have every child of `Snapshot::$data` be a `Snapshot` instance, adding also a raw value which will be untouched.

The problem is, this PR brings some BC Break (the `AbstractSnapshot` is gone, replaced by a classic `Snapshot` class, and some other things will be brought on the `Set` class).

More coming soon.