WIP #16543 add directives to add or remove trailing slash

Added two directives as said in #16543.

Need to discuss:
- The location of the directives: `PathDirectives` or `RouteDirectives`?
- Returning status code to redirect: 301, 302 or make it configurable? 
- More tests
- More documentation
- etc.
The reason we use an indirection like this on zero-parameter directives is to be able to allocate them once and reuse the instances across several instantiations of the `Directives` trait.
Here, `endsWithSlash` is a simple method and there is no need for indirection.