Lifecycle decorators bug.
Fixed a rather large error in the decorators.

This error was causing the underlying "Lifecycle" class to have
the start method bound to IT instead of the extending child class.

It turns out that you cannot reference a class object from within
its own scope while it is in the process of being defined.  You
can, however, reference the class object from an _instance_ of that
class, or by explicit reference.  So, instead of trying to mutate
the class definition from within the decorator functions themselves,
we instead let the container mutate the class at the time when that
class is being _registered_.  This avoids the aforementioned bug.
A test case proving the viability of this solution is included.