Support defining failure chains

env = Substation::Environment.build do
  register :evaluate, Substation::Processor::Evaluator
  register :wrap,     Substation::Processor::Wrapper
end

class Error
  attr_reader :data
  def initialize(data)
    @data = data
  end

  class ValidationError < self
  end
end

chain = env.chain do
  evaluate Vanguard::Validator do
    wrap Errors::ValidationError
  end
  call Some::Action
  wrap Some::Presenter
end

env             = Object.new
invalid_request = Substation::Request.new(env, :invalid)
response        = chain.call(invalid_request)

response.data.instance_of?(Errors::ValidationError)
# => true
response.data.data
# => the actual vanguard violation set