Simplify Command#initialize

The main incompatibility is that @original_hash is no longer the same
object as the first argument. That sounds actually safer IMO as it is
definitely part of the internal implementation and should not be
changed from the outside. I would even be tempted to freeze it.
Introduce Command#has_errors? and clean related logic.
Simplify Command#add_error

A bit more fuctional-ish, so probably easier to split as sub-problems
and sub-methods and then to unit test eventually.
Encapsulate Outcome creation & logic.

The idea here is to keep all Outcome creation and logic in only one
place, namely #validation_outcome. It requires a new parameter, which
is odd because that parameter `r` makes no sense on the public interface.
I'll try to fix this later.
Remove code duplication in DSL implementation.
Enforce some method visibility.

Note sure whether everyone will agree on which ones, but some methods
should probably be for sublasses only, not end users. Hence the
protected section.
Clean class/instance method conventions.

Class methods (say `xxx` for validate, run and run!) are all a simple
shortcut for new(*args).xxx. That makes the interface/implementation
responsibility cleaner.
Clean instance interface.

* `execute` seems protected (not in README and bypass validations);
  For subclasses only.
* `execute!` is removed (not in README so probably not part of the
  public API). The bang was confusing here because of `run!` that
  throws an exception while `execute!` didn't. `run` is the natural
  replacement here and correspond to the similar class method.

In other words, we now have the following contract both on the class
and on the instances:

* `run` validates preconditions then executes the command if everything
  is fine. It returns an `Outcome` in all cases.
* `run!` validates preconditions the executes the command but raises a
  `ValidationException` is something goes wrong.
* `execute` is the non-robust (protected) version of `run`. It does not
  check the preconditions and does not exists on the class.
Merge pull request #3 from blambeau/master

Simplify Command
Use a bit more verbose variable names in a few places. A few coding style tweaks
Merge pull request #8 from bluetools/master

Initialize model classes upon filtering, not on class load
Clean up some whitestpace and dead comments

Also, cache the initialization of constants in model_filter.
Add specs for defaults
Remove unneeded comment
Move a comment to the TODO list
Include filtered inputs in the outcome
Use attr reader a bit
Bump version
Remove seemingly misplaced comment
Added raw_inputs method on Mutation::Command.

Provides access to the original hash that initialized the Mutation::Command,
before filtering and validation.