text: Title: Add max length to `secure_filename()`
  Body: There is already a `TODO` in the source code ([falcon/util/misc.py](https://github.com/falconry/falcon/blob/master/falcon/util/misc.py#L367)):
  ```python
      # TODO(vytas): max_length (int): Maximum length of the returned
      #     filename. Should the returned filename exceed this restriction, it is
      #     truncated while attempting to preserve the extension.
  ```
  
  Actually implement this `max_length` parameter according to the above note.
  
  Also add a new option to [`MultipartParseOptions`](https://falcon.readthedocs.io/en/stable/api/multipart.html#falcon.media.multipart.MultipartParseOptions) that is used when evaluating `part.secure_filename`.
  
  In order to avoid a breaking change, both values should be `None` by default, with a note that starting from Falcon 5.0, this value will non-nullable, with the new default of `NN` characters (please suggest).