Fix Windows Path Sanitation

Fixes #3068, alternative to #3071.

## Benchmarks

### Before

```text
Calculating -------------------------------------
with no questionable path
                         23598 i/100ms
with a single-part questionable path
                         23137 i/100ms
with a multi-part questionable path
                         21023 i/100ms
with a single-part traversal path
                         22509 i/100ms
with a multi-part traversal path
                         22209 i/100ms
with the exact same paths
                         27870 i/100ms
with a single-part absolute path including the base_directory
                         20155 i/100ms
with a multi-part absolute path including the base_directory
                         19565 i/100ms
with a single-part traversal path including the base_directory
                         19598 i/100ms
with a multi-part traversal path including the base_directory
                         19123 i/100ms
-------------------------------------------------
with no questionable path
                       338105.9 (±5.6%) i/s -    1699056 in   5.041212s
with a single-part questionable path
                       318878.6 (±6.5%) i/s -    1596453 in   5.027918s
with a multi-part questionable path
                       275802.9 (±6.2%) i/s -    1387518 in   5.050206s
with a single-part traversal path
                       314833.7 (±6.6%) i/s -    1575630 in   5.027440s
with a multi-part traversal path
                       296817.0 (±6.0%) i/s -    1488003 in   5.031807s
with the exact same paths
                       399532.6 (±5.8%) i/s -    2006640 in   5.039580s
with a single-part absolute path including the base_directory
                       264620.6 (±6.4%) i/s -    1330230 in   5.047639s
with a multi-part absolute path including the base_directory
                       256029.4 (±5.9%) i/s -    1291290 in   5.061697s
with a single-part traversal path including the base_directory
                       259016.4 (±6.5%) i/s -    1293468 in   5.016217s
with a multi-part traversal path including the base_directory
                       257328.8 (±5.5%) i/s -    1300364 in   5.068768s
```

### After

```text
Calculating -------------------------------------
with no questionable path
                         27521 i/100ms
with a single-part questionable path
                         26225 i/100ms
with a multi-part questionable path
                         23491 i/100ms
with a single-part traversal path
                         24573 i/100ms
with a multi-part traversal path
                         24986 i/100ms
with the exact same paths
                        147425 i/100ms
with a single-part absolute path including the base_directory
                         23544 i/100ms
with a multi-part absolute path including the base_directory
                         23084 i/100ms
with a single-part traversal path including the base_directory
                         22661 i/100ms
with a multi-part traversal path including the base_directory
                         22161 i/100ms
-------------------------------------------------
with no questionable path
                       341029.3 (±2.5%) i/s -    1706302 in   5.006646s
with a single-part questionable path
                       323923.5 (±3.0%) i/s -    1625950 in   5.024114s
with a multi-part questionable path
                       284311.7 (±5.7%) i/s -    1432951 in   5.058581s
with a single-part traversal path
                       325828.7 (±2.8%) i/s -    1646391 in   5.057129s
with a multi-part traversal path
                       304258.6 (±3.1%) i/s -    1524146 in   5.014410s
with the exact same paths
                      7386492.5 (±4.1%) i/s -   37003675 in   5.019432s
with a single-part absolute path including the base_directory
                       283879.2 (±3.2%) i/s -    1436184 in   5.064790s
with a multi-part absolute path including the base_directory
                       277743.3 (±3.3%) i/s -    1408124 in   5.075801s
with a single-part traversal path including the base_directory
                       275436.9 (±2.3%) i/s -    1382321 in   5.021342s
with a multi-part traversal path including the base_directory
                       264333.5 (±2.8%) i/s -    1329660 in   5.034274s
```

@jekyll/windows, would you please test?
Taking care of it here: https://github.com/jekyll/jekyll/pull/3089