Because of the platform structure, we have to provide a way to add ranges to
Selection objects that aren't associated with a shell/nsFrameSelection.
This commit extends the original implementation with workarounds to add
these ranges by reaching into the internal implementation for adding ranges
and calling those functions directly.
This avoid a large performance regression at the cost of making selections visually less accurate if sections are included with `-moz-user-select: none;`