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.
Since the problem in SI-6758 is fixed, it's ok to move checking for unused imports to Analyzer. This allows the check to be used in the IDE.
Remove unused symbols and imports from the library.
Merge pull request #2195 from vigdorchik/lint_library

Changes around lint
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.
Name boolean arguments in src/compiler.

What would you prefer?

  adaptToMemberWithArgs(tree, qual, name, mode, false, false)

Or:

  adaptToMemberWithArgs(tree, qual, name, mode, reportAmbiguous = false, saveErrors = false)
Name boolean arguments in src/reflect.
Name boolean arguments in src/library.
Check named-args-for-clarity incur no extra bytecode

When named arguments correspond the the parameter declaration
order, the compiler should not lift out assignments before
the method call, as it would have to do for out-of-order
arguments.

Confirm this with a bytecode comparison test.