+ routing: add `optionalAuthenticate` directive

- `optionalAuthenticate` directive provides `Some(userContext)` on
success, `None` if no credentials are provided, otherwise rejects
Maybe we should add this sentence:
"If authentication fails the directive extracts `None`."