I should have commented this out a little better, but I think this was used for normalization. In some browsers, selecting to the end of some text would make `getNodes()` include the next node while with others, it wouldn't. We don't want to include that next node since the user's cursor wasn't actually in that node.

To make things consistent, if you partially selected one list item and selected over 3 more, then finished partially through another, I believe my implementation would only return the middle 3. Is that the old behavior? What is the new behavior?