def subscribe(listeners)
      if listeners.is_a?(Hash)
        listeners.each { |step, listener| steps[step].subscribe(listener) }
      else
        steps.each { |(_, step)| step.subscribe(listeners) }
      end
      self
    end
def subscribe(listeners)
      if listeners.is_a?(Hash)
        listeners.each { |step, listener| steps[step].subscribe(listener) }
      else
        steps.each { |(_, step)| step.subscribe(listeners) }
      end
      self
    end
@api private
 Subscribe event listeners to specific steps

 @example
   transaction = Transflow(container: my_container) {
     step(:one) { step(:two, publish: true }
   }

   class MyListener
     def self.two_success(*args)
       puts 'yes!'
     end

     def self.two_failure(*args)
       puts 'oh noez!'
     end
   end

   transaction.subscribe(two: my_listener)

   transaction.call(some_input)

 @param [Hash<Symbol => Object>] listeners The step=>listener map

 @return [self]

 @api public