Replace Handler::File with Middleware::Static

Requests for static (public) content get handled by Plack::Middleware::Static
rather than the (megasplat) route previously added by Handler::File. If
Middleware::Static returns a 404, the request is then passed to the
application for processing.

This aligns Dancer2 with Dancer, with
  * requests for static content being processed before the request hits
    the app,
  * No hooks will be executed when static content is served.

There is also an (currently undocumented) setting to disable the static
content handling by Middleware::Static, via  'set static_handler => 0'.

Note that this alters the way the psgi coderef is constructed; rather
than using Plack::Builder we start with the (inner most) app and
(directly) wrap the middleware around, building up the the returned ref.
Replace response attribute triggers with middleware

Removing the two triggers on attributes from Core::Response as prep work
for allowing more flexible response types, such as allowing the body to
be a filehandle.

This involved:
  * Replacing the trigger for response content length calculation with
    Plack::Middleware::ContentLength.
  * Replacing the trigger for removing unnecessare response body (such as on
    a 204 response) with Plack::Middleware::RemoveRedundantBody.
  * Adding Plack::Middleware::FixMissingBodyInRedirect so that redirect
    responses have a short note with the new URI(s).
Replace the passthrough option with a file test.

As @DavsX proposed within the discussion of issue #664.
reflect change
Merge branch 'feature/common_middleware'