sanitise-file-name: an unusually flexible and efficient file name sanitiser

At the time of writing, I believe this to be one of the very best file name sanitisers around (comparing it with extant Rust options like sanitize-filename and sanitize-filename-reader-friendly, and other implementations I found for environments like Node.js and Python; I didn’t look at anything C/C++).

Demonstration of the simplest and most convenient form of usage:

```rust use sanitisefilename::sanitise;

fn main() { // Examples of some of the things it can do: // whitespace is collapsed to one space, // various ASCII puntuation gets replaced by underscores, // outer whitespace is trimmed. // (There are reasons for each of these things, // and they can all be turned off or customised with options.) asserteq!( sanitise(" https://example.com/Some\tfile \u{a0} name .exe "), "https_example.comSome file name.exe", );

// The windows_safe option leads to the addition of the underscore.
assert_eq!(sanitise("aux.h"), "aux_.h");

} ```

sanitise_file_name::Options docs explain all sanitisation functionality precisely. And all of it is customisable.

This crate supports no_std operation and has several other Cargo features; refer to the root of the crate docs for information.