Fix formatting and add yard @abstract tags
Update reek.yml and move specs where they belong
Make ivar initialization formatting consistent
Update flay threshold and score

I find it rather interesting that changing ivar
initialization in Action and Response classes to
only assign one ivar per statement has this rather
huge impact on flay score.
[ci skip] Simplify docs for Action.call
Decouple use case implementors from substation

* This removes the Action base class and thus the
  need to inherit from anything in order to
  implement an application use case

* The only public interface required by use case
  implementors is #call(request)

* Request instances now wrap access to the env
  and the input model instance. They now also
  provide #success(output) and #error(output)
  where output is an arbitrary object returned
  from invoking a specific application use case.

* Response instances now provide access to the
  #env used to produce them, the #input model
  instances passed to the use case implementor,
  and the #ouput object returned by that.
Equalize Response on #request and #output
Tighten up reek.yml to match the current situation
Make Observer::NULL.kind_of?(Observer) return true

* Rename Observer::{Null => NULL}
* Move Observer::NULL{.call => #call}
Freeze the Observer::NULL instance
Remove constants that aren't in use anymore
[ci skip] Pimp the docs
Document the public API with detailed examples
Rename {Environment(#dispatch) => Dispatcher(#call)}

* Accept an additional arbitrary object as third
  parameter to Dispatcher#call. This object will
  typically be an application environment that
  provides access to the logger, a storage layer
  abstraction or really anything necessary. It
  might just as well hold the dispatcher instance
  itself, which could be handy for dispatching to
  other actions from within an action.

* The renaming also makes it clear that this class
  should be considered closed. Its responsibility
  is to dispatch to registered actions and to give
  a list of registered action names. Nothing more.
[ci skip] Add a README file
[ci skip] Fix code in README example
[ci skip] Remove useless README mentions of substation
[ci skip] Fix README example for app environments
[ci skip] Fix README example for app environments
[ci skip] Add missing docs and fix yard warnings