rwlock-based dependency solving and scheduling

Instead of tracking dependencies and planning work in some formal
structure, rely on threads and proper locking to introduce ordering
implicitly and let the builtin GC take care of cleanup.

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
sparkle: publish in the change format as well

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
implement break-based unit interruption

It is now possible to interrupt units in their non-critical sections
when they need to be obsoleted. The break exception propagates to all
dependents, killing-off the entire dependency tree.

All units start with breaks disabled just to be on the safe side,
but any long running tasks should allow interruption and handle it
gracefully.

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
operate on just changes, not create/update/delete

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
introduce configuration objects

A generic interface to describe configuration to be applied,
most probably derived from a change object. Serve to spawn units.

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
remove 2nd-tier managers

I know these have been put in recently to make things more organized,
but in reality, they are just more indirection clutter.

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
drop dds dependency

The dds module no longer exists, because we can solve dependencies using
threads in a Twilight-specic manner much more efficiently.

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
improve interface of configuration objects

Add a generic method to detect when the object is going to be
destroyed and should be deleted from the configuration when it's
task finishes.

Also change how units are spawned. Instead of receiving a manager,
pass them a hash table with other units so that a snapshot can be
passed to them with every transaction.

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
sketon for the change->config->unit workflow

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
fix sparkle% initialization

Signed-off-by: Jan Dvořák <mordae@anilinux.org>
sparkle%: fix changes receiving

Signed-off-by: Jan Dvořák <mordae@anilinux.org>