[ci skip] Document Substation::Chain in the README
[ci skip] Update Changelog for release
[ci skip] Bump version to 0.0.8
[ci skip] Remove useless @example tag
Use .ruby-{version, gemset} instead of .rvmrc
Stop testing 1.8 rubies on travis
Add private Chain::Outgoing#respond_with
Implement Chain::DSL for easy definition of chains
Remove currently unused empty file
Add missing yard documentation
Adjust metrics settings
Kill the last remaining mutations
Merge pull request #4 from snusnu/chain-dsl

Introduce a DSL to construct a chain
Move utils.rb file directly below lib/substation
Move Environment::DSL class to its own file
Dry up specs for Chain::DSL related code
Add Processor::{Evaluator, Pivot, Wrapper}

Supports the following chain definition ootb now:

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

AUTHENTICATED = env.chain { authenticate }
AUTHORIZED    = env.chain(AUTHENTICATED) { authorize }

CREATE_PERSON = env.chain(AUTHORIZED) do
  evaluate Sanitizers::NEW_PERSON
  evaluate Validators::NEW_PERSON

  call Actions::CreatePerson

  wrap Presenters::Person
  wrap Views::Person
end
[ci skip] Prepare changelog for release
Bump version to 0.0.9
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