a new transformation --simplify-recursive-template-instantiation

This pass handles a special case where we have recursive template
instantiations. For example, given a code blow:
  C<B<C<B<C<B<D>, G<int> > >
it will replace an outer B instantiation with an inner one.
Currently we only handle class template instantiations.