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.
I wonder if we can reuse the path directives:
```scala
def redirectTrailingSlashStripped = (pathSuffixTest(Slash) & redirect(...)) | pass
def redirectTrailingSlashAppended = (pathSuffixTest(!Slash) & redirect(...)) | pass
```
(untested)