Maps a
TypeBinding onto values. Two
TypeBindings are considered equivalent
if their IDs are the same or if they have TypeIds.NoId and they are identical objects.
Takes into account the fact that a ReferenceBinding may have its ID change from NoId
to a real ID at any time without notice. (This is a behavior that was observed in
TypeHierarchyTests.testAnonymousType01 -- if type IDs could be made invariant then it
would be possible to implement a more efficient map that never needs to perform an
exhaustive search.)