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