spike on runner/pipeline
Get the Runner to a working state

Yaks::Runner generalizes the concept of a pipeline of transformations,
so it's easier to provide before/after/around hooks for each steps.

Also contains a fix for passing in an item_mapper to Yaks#call.
Add another benchmark

This is just the first, the idea is to compare flat vs deep structures.
Prevent freezing the Rack env

Switch to flat freezing in Runner, because it otherwise would deep
freeze the whole rack env.
Register the serializer each format needs, so far they're all :json

This also contains a refactoring of how registering a format works, and
JsonApi has been renamed to JsonAPI.
YARD updates and fixes
Support for different output serializations

Instead of returning a raw hash/array from Yaks.serialize, include a
last processing step to serialize to string. This way Yaks can
distinguish between the "syntax tree" representation (for JSON: hashes
and arrays) and the final string form.

Still needed: tests, ability to override serializer, before/after/around hooks.
Implement the `serialize' step and generic hooks

The final step of a call to Yaks is transforming a syntax tree
representation (for JSON simply arrays and hashes) to a string. Before
Yaks did not care about this step, leaving it to the caller to call
JSON.dump or similar. To support non-JSON output formats with a uniform
interface this had to be pulled into Yaks. It is possible to skip the
serialize step to get the old behavior:

    Yaks.new do
      skip :serialize
    end

This is part of a generic hooks implementation, all steps, :map,
:format, :serialize, can now be hooked into with before,after,around, or
skip. Hooks are inserted into the processing pipeline, so the return
value of the hook is passed on to the next processing step.

    Yaks.new do
      around :serialize do |data|
        start = Time.now
        result = yield(data)
        puts "Serializing took #{Time.now-start}"
        result
      end

      before :map do |model|
        puts "Mapping an instance of #{model.class}"
        yield(model)
      end
    end
Add a Rake task to build the Yard docs
Fix the deep_eql RSpec matcher

It did not detect the case where one hash has a key with value nil, and
the other does not have the key.

    { foo: nil }

vs

    { }
Documentation fixes/improvements

Decided to stick with the ROM style of @param [Class] name for YARD
docs. YARD also supports @param name [Class], but I prefer this
one. Start the description with a capital or, even better, move it to
the next line and indent.

    # @param [Beverage] tea
    #   The tea you like to brew

This commit is just a nudge in the right direction.
Remove the old `after' hook, we have better hooks in place now.
Use `format_name` instead of just `name` for the name of format class

Format implementations know their own "system name",
e.g. Yaks::Format::JsonAPI.format_name == :json_api

Before we used simply `name' for that, but that clashed with Ruby's
Class#name method.
Improve mutation coverage, upgrade to RSpec 3

A slew of fixes to get to better mutcov, back at ~93% now. Also made the
change from RSpec 2.99 to RSpec 3, we were already mostly compatible.
Reluctantly add Yaks::Mapper to the bogus search_modules list

using fake('Module::ClassName') breaks in Ruby 1.9.3 and JRuby. Fixing
it this way. I have a feeling we might get name clashes later on.
100% Mutation Coverage. Shit just got real.

    Mutant configuration:
    Matcher:            #<Mutant::Matcher::Config match_expressions=[<Mutant::Expression: Yaks*>] subject_ignores=[] subject_selects=[]>
    Integration:        rspec
    Expect Coverage:    100.00%
    Processes:          4
    Includes:           ["lib"]
    Requires:           ["yaks"]
    Available Subjects: 135
    Subjects:           135
    Mutations:          4757
    Kills:              4757
    Alive:              0
    Runtime:            300.54s
    Killtime:           528.92s
    Overhead:           -43.18%
    Coverage:           100.00%
    Expected:           100.00%
Remove leftover conflict marker
Prepare 0.5.0

Update CHANGELOG, README, add more Yard docs, write the breaking changes
snippet, update the version.
Final CHANGELOG notes
Merge pull request #27 from plexus/runner

Runner/Pipeline, hooks, 100% mutcov