Runner/Pipeline, hooks, 100% mutcov

This commit contains a major refactoring, making it explicit that Yaks is essentially a pipeline of several transformation steps: map, format, serialize. (currently also primitivize, but that should become part of serialize I think).

One thing that now became easy to do was to put a generic system of hooks into place, e.g.

```ruby
yaks = Yaks.new do
  around :serialize do |data|
    # do some timing
    yield(data)
  end

  after :map do |resource|
    # e.g. add extra links to the resource
  end

  skip :serialize # bring back old behavior, return arrays/hashes, not serialized json
end
```

This PR also contains a few improvements of the YARD docs (not too many yet), and, :trumpet: brings us to 100% mutation coverage.

This is enough functionality to bump to 0.5.0 I think. Just need to update the Changelog, README, and breaking changes message.

:no_entry_sign: