Removes TraitMap::insert_for_type.
Some use cases require the compiler to call insert_implementation_for_type
on every call of find_method_for_type.
This would double the compile time of a simple script.
To avoid this we removed the TraitMap::insert_for_type. The TraitMap
now only stores the original implementations and uses a less restrictive
unify_check to get those that match the concrete implementations.
This reduces significantly the size of the TraitMap and speeds up the lookup times.
On the other hand, it also introduces a type substitution on every find_method_for_type.
A future PR will address the performance of doing type substitutions.