Ths patch introduces a new class called `CrossShadowBoundaryRange` to make cross shadow boundary range related stuff can be isolated into a single class. It also tweaks a few functions along the call stack, the goal here is to make sure nsContentUtils::IsPointInSelection can detect points in ShadowDOM selection. There's an additional change to `SelectionUtils.sys.mjs` to make sure the correct context menu items are displayed when the current selection crosses the boundary. Differential Revision: https://phabricator.services.mozilla.com/D204080