[WIP] Support (de)composing input data for handlers

The integration spec now works for a typical rack
app and assumes JSON encoded data inside some
'session' and 'data' slots of the fake rack env.

The unit specs fail horribly atm, but it makes no
sense to make them pass at this point.
Split spec/app.rb into separate files
Move spec/integration/{demo_spec.rb => demo/web_spec.rb}

This is in preparation for having one integration
spec for demo/core and one for demo/web
Align {Transformer, Wrapper} for future de-duplication
Make internal Processor API private
Move most classes/modules into separate files
Use Evaluator::Handler in custom spec evaluator handlers

This actually makes sure that the minimal contract
is obeyed. Previously, those handlers returned a
Substation::Response, which was API compatible but
semantically not the thing we want to return from
custom code like that.
Simplify and de-duplicate Transformer and Wrapper
Move Processor{::Builder::Config => Config}
Fix all unit specs apart from Chain#call
Fix specs for Chain#call
Merge 'mbj/decompose-compose' into decompose-compose
Use the shared Request#initialize context across specs
Use and enforce the new rspec #expect syntax
Add spec for Request#with_input
Kill mutations in Chain::DSL.build
Kill mutation in Chain::DSL::Builder#define_dsl_method
Explicitly expect calls instead of only allowing them
Give doubles in shared contexts dedicated names
Add specs for Processor::Config