Merge branch 'release/v0.6.1' into develop

* release/v0.6.1:
  Version bump to v0.6.1 and regenerated gemspec.
Introduce #model and .model_name to Messages.

Details:
* Mainly because Aequitas' i18n message transformer looks for these
  methods when creating a localized error message.
* But thinking it would be nice to have the introspection to
  match up the kind and model_name that implements the kind.
* #model is essentially an alias to the class.
Adds Serf::Command to support Command Pattern for Serf users.

Details:
* Handlers are set to receive messages and to process messages,
  but the Command pattern is also useful in support of the handlers.
* This provides some reusable code to implement the Command pattern
  that accepts Serf::Messages (in object, or ENV hash form).
Adds helpers for syntactic sugar for getting @options.
Split up CaughtErrorEvent's message into class/message parts.

Details:
* Wanted to clean up the CaughtError event message, and
  make it easier to filter by the caught error class.
Tableizes WithErrorHandling's CaughtErrorEvent's error field.

Details:
* Felt that the tableized version looks more asthetically pleasing
  and easier to filter '/' than '::'.
Fix: needed to pop off @args.

Details:
* We wanted to extract the options from the @args... but the pop
  method execution wasn't sent to the @args variable.
Refactor options extraction into separate Module.

Details:
* options extraction from an *args array is a reusable feature.
  So we want to extract that code into a separate module.
* New protected method is extract_options! for use by including class
  to process the options.
* Still uses the opts method and has the equivalent options attr reader.
Fix: WithOptionsExtraction robust to non-initialization.

Details:
* calling 'opts' method before 'extract_options!' would have
  raised a nil error because @options was uninitialized.
* 'opts' now calls the 'options' reader, which will check for
  @options. Return an empty hash if no @options is set.
WithErrorHandling now uses WithOptionsExtraction.

Details:
* WithOptionsExtraction makes it easier to configure WithErrorHandling.
Renamed results_channel to response_channel.

Details:
* It seemed more apt to use response instead of results.
Changes Semantics of opts and opts! helpers.

Details:
* Adds opts! method, which will raise an error when a nil would have
  been returned as the found options.
* Changes opts to not raise an error at all.
* Changes opts to return the default value if the key is
  non-existent in the options value, or if the explicit value
  of the key in the options hash is set to nil.
WithErrorHandling now returns success flag and results.

Details:
* I wanted a way to determine if the returned result from
  with_error_handling was due to an error it caught, or
  if it was a result returned by the block.
* So we return the combination of success flag and results.
extract_options! returns extracted flag and options.

Details:
* We want to know if options were extracted from the arguments.
* Now we can detect that from the return values of extract_options.
Adds `build` class method to Commands.

Details:
* This is so we can break up the build and execution of Command
  objects into two steps.
* This is for serfer, which will build all the Units of Work
  Commands before passing them to runners for execution.
Adds `full_error_messages` method to Serf::Message.

Details:
* Sometimes we want to override the #errors.full_messages.join('. ')
  assumption if we didn't use ActiveModel or Aequitas/Virtus
  for underlying parsing and validation.
Wrap publishing to error channel in rescue block.

Details:
* Unlikely, but our error channel implementation may raise an
  error. This would then raise more errors to a caller that
  was expecting with_error_handling to catch.
* We omit wrapping the logger calls because if that raises errors,
  then we have way more fundamental issues at hand.
Major Change: Builder DSL, Handler Contract.

Details:
* Completely changed the Builder DSL to flow much more naturally.
  We removed the concept of ROUTE Manifests.
  Added ability to have more than foreground and background runners.
  It will be easier to declare Units of Work to be done for
  each type of match (kind or regex) in different runner contexts.
* We changed the concept of Handlers to be Units of Work, ala the
  Command pattern. This lets us have a uniform Command and Handler
  method contract, even if we have different implementations.
* Changing Handlers in tandem with DSL also changes our idea of Routes
  and Endpoints. Endpoints now are a config/declaration about how to
  create a Unit of Work (Handler/Command). And we are able to remove
  Routes and RouteSets because the new DSL allows us to just use
  a single "Registry" per runner to match input to the Endpoints.
* The concurrency model, I hope, feels better because the Units of Work
  are separate, unshared, data that can thrown to different threads
  for processing by the background runners (EmRunner, and GirlFriday TBD).
* Updated Runners to now cleanly separate errors and responses
  w.r.t publishing to channels. Caught errors are only published
  to the error channel. Returned results to the response channel.
Renames Runners by removing the Suffix 'Runner'.

Details:
* They're already in the Serf::Runner module,
  so removed the duplication.
Removing unnecessary variable assignment in Direct Runner.

Details:
* We just make the opts! call in constructor to know that we
  have a response channel.