Require firstKey and lastKey on IntMap to be tail recursive.
Disentangled RangePositions from interactive.

This is a stepping stone to having range positions all the
time, as well as to modularizing the presentation compiler.
It does not enable range positions by default, only places
them smoewhere where they can be.
Eliminated separate RangePositions trait.

One of those eternal headaches which probably sounded better
on paper. Even before range positions are the default, there's
no reason we can't have the range position code available
in all globals enabled via settings, just like everything else.
Merge pull request #2183 from mt2309/tailrec-intmap

Require firstKey and lastKey on IntMap tail-recursive.
Merge pull request #2197 from paulp/pr/integrate-range-positions

Integrate range positions.