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.
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