+htp #15930 import RangeDirectives from spray

Based on a rebased version of #16183. So, just review the last commit. I will rebase once the other PR is merged.

Fixes #15930.

/cc @sirthias
Maybe add that it is for efficiency reasons or that the overhead of keeping them separate is greater than then the size between them, and why 80 is a good number.