Model wrapper which provides normal access to an underlying model but
also maintains a snapshot of the triples it was last known to contain.
A snapshot action
causes the set of changes between this and the previous snapshot to
be calculated and the cache updated. The snapshot process will also
fire change notification.