SI-8553 WrappedArray throws exception on lastIndexWhere when index out of range

Adds a check in `IndexedSeqOptimized#lastIndexWhere(A => Boolean, Int)`
to begin searching in the end of the collection if `end` is greater than
the collection's length.

Discussed in
https://groups.google.com/d/topic/scala-internals/-MacXivbY0Q/discussion.
Cleanups for tracing in GenBCode, improve some comments
Minor cleanups and commenting around BType.

Use `length` instead of `size` on arrays in `reflect/internal/Names`.
Cleanups in Names.scala

Enter only fully constructed Name objects into the hash table, this
should make lookupTypeName thread-safe.

Clean up lookupTypeName - the hash code for a type name is the same
as for its correspondent term name.

Going from a type name toTermName should never create a new TermName
instance. Assert that.
Re-use the exsiting range of the name table when using subName.

The sub-name can just point to a smaller range of the array.
More cleanups and commenting in GenBCode
Move class BType to separate component, include it by composition.

Rewire BType in its new location with the rest of the backend.

Remove the now-empty BCodeGlue.
SI-6678 Make currentMirror macro hygenic
To have effect, @deprecated needs to be an annotation.
SI-8475 GroupedIterator is also lazy when padded

This is the related case which dnlgtm in the previous fix.

The old code seems to be tilting for laziness, but we have
to fill the buffer with the current group anyway, so there
is no reason to be coy about calling ArrayBuffer.length.
SI-8630 lineToString no longer long by one at eof

One more EOL crasher, or lack-of-EOL crasher, when the text
is at EOF.

It was not caught by the last round of excellent and
thorough tests because

```
// If non-whitespace tokens run all the way up to EOF,
// positions go wrong because the correct end of the last
// token cannot be used as an index into the char array.
// The least painful way to address this was to add a
// newline to the array.
```
Include scalap in the distro.
SI-8637 fixes toolbox phase corruption

It turns out, Toolbox.typecheck hasn't been properly re-initializing its state
between requests.

In particular, globalPhase was left untouched, which made the compiler
think that it's past typer, and that in turn disabled implicits.

This commit applies a symptomatic fix to this problem.
Rewrite BType to a type hierarchy.

This makes BTypes more type safe.

It fixes at least one bug: the old BTypes are not actually
hash-consed. This worked because the equals method used to have a
fallback that would compare the represented string
character-by-character.
Unit tests for new BType classes
Unit tests for reflect/internal/Names
Merge pull request #3774 from lrytz/opt/backendWip

More type safe implementation of BType, cleanups in GenBCode
Merge pull request #3798 from adriaanm/scalap

Include scalap in the distro.
Merge pull request #3786 from tvierling/deprecate-fixes-2.11.x

Deprecate AVLTree and concurrent.Lock in 2.11.2
Merge pull request #3789 from clhodapp/fix/SI-6678

SI-6678 Make currentMirror macro hygenic