Add cpanfile to skeleton
Remove unnecessary requirements
Add XS modules as recommendation from the migration pod
Add YAML as recommended
Update the skeleton:

Plack::Test is provided by Plack, required by Dancer2 to begin
with.

No need to recommend YAML on testing, it is already recommended
for Dancer2 itself.

Small typo.
reflect change
Merge branch 'pr/cpanfile'
fixed per #777
reflect change
Merge branch 'fix/public-dir-doc'
Do not stringify an expected-overloaded URI object:

Coercions are bad, stringification is bad, and assuming on it is
even worse. Your mileage may vary and doesn't interest me in
this respect. :)

The "content" attribute in the response tried to stringify the
content automatically (using a coerce), which I just removed.

When removing this, a test failed showing that the URI created
by the "uri_for" method returned a blessed string reference with
an overload, which was expected to be stringified.

Fixing this resulted in another test failing. Fixed that test too.
reflect change
Merge branch 'fix/no-uri-coerce-overload'
Don't serialize/deserialize when no content:

Although we used to serialize when we only had content, this didn't
extend to deserialization. Also, we would run the before hook even
though there was nothing we would serialize.

Now the rules are clearer:
* If there is no content, do not serialize or deserialize.
* If there is no serialization going on, such as in lack of content,
  do not call the hooks for it.

An additional change was made to building the parameters. It would
automatically go through deserialization. Then the result would be
used as the paramters.

Even though we didn't deserialize anymore (no content), we would
still return empty. Those parameters were then used. Instead, now
we simply don't call deserialization when building parameters unless
there is content to deserialize.

This resolves GH #797. There is also an added test for this.

This also relates to a known issue: serializers don't send errors,
which means that a failed serialization/deserialization does not
produce an error. The content is just ignored instead. That results
in a successful (200) response instead of generating a 500 right
then and there.

The test also has a TODO item testing this. Hopefully once we add
proper exception objects, we'll be handling that too.
reflect change
Merge branch 'fix/deserialize-empty-body'
Handle invalid serialized response better:

When we call the serializer on bad input, it doesn't crash (yet)
and instead returns an undef. When we tried to simply overwrite
$_[0] with the response, it crashed with 'Modification of read-only
value'. It doesn't happen when it's an empty string, only on undef.

So now we just check if it's undef, and if so, add it by unshifting.

We added a test that checks it doesn't actually crash on the wrong
thing, but also has a TODO to verify it will crash correctly (by
returning a 500) in the future.
reflect change
Merge branch 'fix/crash-on-invalid-content-to-serializer'
document environment variables