* [Slim4] Copy Slim3 generator as starting point
* [Slim4] Add psr7Implementation generator option
Slim supports PSR-7 interfaces for its Request and Response objects.
Slim provides its own PSR-7 implementation so that it works out of the
box.
However, you are free to replace Slim’s default PSR-7 objects with
a third-party implementation.
[Ref] https://www.slimframework.com/docs/v4/concepts/value-objects.html
* [Slim4] Handle psr7Implementation generator option
It somehow ended up with composerPackages and composerDevPackages
codegen variables and two additional functions. Hope, it's not too much.
* [Slim4] Extend from Slim3 generator
* [Slim4] Bump PHP Slim Framework version to 4.0.0
* [Slim4] Bump required PHP version to 7.1
[Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html)
* [Slim4] Remove app settings
Slim’s App settings used to be a part of the container and they have
now been decoupled from it.
[Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html)
* [Slim4] Set container argument optional
Slim uses an optional dependency container to prepare, manage,
and inject application dependencies.
Slim supports containers that implement PSR-11
like [PHP-DI](http://php-di.org/doc/frameworks/slim.html).
[Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html)
* [Slim4] Change response body write
You can't write to response instance directly anymore,
need to retrieve body object first.
[Doc](https://www.slimframework.com/docs/v4/objects/response.html#the-response-body)
* [Slim4] Change Slim\App constructor
[Upgrade Guide](https://www.slimframework.com/docs/v4/start/upgrade.html)
* [Slim4] Refactor token authentication options
User can provide array or Container as constructor argument from now.
Small refactoring required to retrieve authentication options from
that argument.
* [Slim4] Add PSR-7 implementation codegen flags
This approach seems more flexible to me.
User can customize templates in favor of chosen PSR7 implementation.
It's easier to change Composer packages and their versions.
* [Slim4] Add JsonBodyParserMiddleware
Slim4 doesn't parse JSON body, need to add suggested middleware.
Ref: https://www.slimframework.com/docs/v4/objects/request.html#the-request-body
* [Slim4] Remove request's deprecated methods usage
Since Slim 4.0.0 ServerRequest implementation doesn't have
getQueryParam and getParsedBodyParam methods anymore.
* [Slim4] Use getUploadedFiles for multipart request
isMultipart codegen property is always false so far.
Hope that bug will be fixed soon.
* [Slim4] Add samples