Add missing ui test

Change-Id: Ia3788740a75902b9e8cac99bdca4eb0e78253879
Simplify modified/created/deleted hooks

Instead of having a very complicated logic on store, let the Domain with the
responsibility. That's the way this work:

An object will be flushed (a non-commit flush or a commit flush), it will check
what operation is going to be made to it.

After that, just before committing, it will call on_create hook if it was
created or on_update hook if it was updated.

The only special case is on_delete, that will be called just before being
removed from store. That way one can use it's store to do a cleanup (after
being removed from the store, the object still lives as a simple python object.
It's properties are the same as the last time it was loaded from the database,
but changes to it won't be propagated anymore to the db). There's no problem if
one do a cleanup in this situation and after the store is rolled back, because
that rollback will revert that cleanup too.

To autoreload changes, we now use store._cache. It contains all objects living
on the store. We can't rely on _dirty since a flush can occur at any time and
only touched objects (created/updated/removed) will be there (after the flush,
they are not there anymore, but are on cache)

This code is a little faster also. A 'make check' with it having to create a
database took on my computer before ~232s. Not it takes ~228 (-4 seg). This is
probably because we removed the overhead of having to add the object to the
modified set ever ytime it was modified.

Change-Id: I9a66b03e6c0414d9a526e5e710efa3784660437e