redesigned components to use runner directly

No more timeouts but instead notifications about completion of other
components' tasks and an ability to delay tasks for any (most likely a
dependency) reasons.

Exceptions now pass freely and are not expected to convey any kind of
information to the manager.  They are to be caught in the worker and
merged into the private component state as needed.

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