Represents a byte range as used in the Range header.
If end is non-negative, then start and end represent the bounds of of the range, counting from 0.
(Eg, the first 500 bytes would be represented as start = 0 and end = 499.)
If end is -1 and start is non-negative, then this represents a range starting at start and ending
with the last byte of the requested resource body. (Eg, all but the first 500 bytes would be start = 500, and end
= -1.)
If end is -1 and start is negative, then it represents a "suffix range", referring to the last -start
bytes of the resource body. (Eg, the last 500 bytes would be start = -500 and end = -1.)