'Apply the steps in this blueprint to an object.
This will apply the ``__init__`` and ``include`` methods
of each step, with the object as argument::
step = Step(obj)
step.include(obj)
For :class:`StartStopStep` the services created
will also be added to the objects ``steps`` attribute.'

def apply(self, parent, **kwargs):

    self._debug(u'Preparing    bootsteps.')
    order = self.order = []
    steps = self.steps = self.claim_steps()
    self._debug(u'Building    graph...')
    for S in self._finalize_steps(steps):
        step = S(parent, **kwargs)
        steps[step.name] = step
        order.append(step)
    self._debug(u'New    boot    order:    {%s}', u',    '.join((s.alias for s in self.order)))
    for step in order:
        step.include(parent)
    return self
