DRY: Reuse attributes as PUT/POST parameters

Note: *all* the attributes are being sent as parameter, which works
since the Rails controller has a whitelist, but will be improved later
by adding read_only attributes
DRY: Expect parameter values in PUT/POST response
DRY: Accept null parameters in PUT/POST requests
Move fixture-related functions in new helper
Rename fixtures to instances
New Samples class to abstract model instances

Rather than polluting the main namespace with ActiveRecord-related
function, a new Samples class is provided that delegates AR functions
to a `model` accessor, giving room to extend for more functions that
are only required for the purpose of fixtures
New Samples#raise_error_on method

Rather than polluting the specs with details on how to mock a failed
save, add a method to the Samples class created for fixture purposes
New Samples#any? and #none methods

Rather than specifying `instances.first` or `-1` in the spec to indicate
an existing or unknown instance, this behavior is delegated to the Samples
class which ensures that an existing or unknown instance is always found.

Note that (for now) examples with the same URL must be separated because the
parameter are assigned with a `let` inside the group example, and this would
not allow requests with the different value to be grouped together. This will
be improved later.

Note that the lazy evaluator in `none` requires Ruby >= 2.0.
More compact examples with new `request` method

Rather than using `let` to set the value of a URL parameter and then
calling `example_request` or `do_request` to request the URL, the new
`request` method does both things at once.

Note that `request` does not use `let` but explicitly passes the extra
parameters to the `do_request` method. This allows examples with the same
URL but different values (e.g. `/concert/:id` with valid and unknown `id`)
to be grouped together for better reading
Split long `respond_with` in many short methods
Rspec-api-doc DSL for POST (valid and invalid)
Rspec-api-doc DSL for PUT (valid and invalid)
Merge branch 'put-and-post-api-requests'
Merge branch 'more-compact-specs'
Failing spec: get '/locations/:location/concerts'

This is the starting point for a filtering functionality
Code to satisfy '/locations/:location/concerts'

The tests pass, however they are weak for two reasons:
- they do not check that the location in the results always match the filter
- they do not guarantee that the instances include both concerts at that
location and somewhere else.

This will be fixed in the next commits.
Ensure only results matching filter are returned

Still, the example is incomplete because we are not ensuring that
Concert.all also includes concert in a different location
Separate logic of filter and instance value

This is the first step to filter by something different from a field,
for instance a *slugified* version of a field.

Note that the extra_params passed to `request` are now evaluated with
`instance_exec` rather than `eval` so they can access the values of the
variables set with `let()` and the example group level
Tests fail if the filter is not URI-escaped
Tests pass by URI escaping the filter