Add callbacks to outcomes

Fixes #139.

``` rb
Interaction
  .run(inputs)
  .when_invalid do |outcome|
    # ...
  end
  .when_valid do |result|
    # ...
  end
```