Use PropertyPath instead of a wild guess for CollectionSnapshot

Fixes #28, and also allows to use more complex keys than what it was before (like `[key][subkey]`, `property.sub`, `property.sub[key]`, ... etc)