Actually implement most of the expected behavior

* Hack into the class declaration in order to declare components
  dynamically
* Use descriptors to make plugged-in attributes available
* Handle the basics of asynchronous dependancies
Switch from package-based to module-based architecture

There was no reason to maintain a full package for 200 lines of
simple Python and one single class.
Partially handles interfaces as plugins

Interfaces may be used as plugins and the dependency management layer
will wait until a component is ready and implements the interface.