Move highlighting into its own plugin

This makes some changes so that highlighting can become its own plugin.

This does mean that any place which relied on the selection setting on input of the `LRTEditor` had to be updated to do its own selection setting.  This also removes the public selection attribute of `LRTEditor` which often times would be out of date or incorrect because of changes that other plugins had made - it relied on the plugins being courteous and updating the selection attribute.

The test for `if (selection)` was removed because `getSelection` returns null on failure and `setSelection` checks if there is a null check.  Adding the `if (selection)` check could be done to make this more explicit, but it is not necessary.