Code emitting for C++ mostly in place.

Missing: different name for each instantiation (call site and definition).
Give unique names to each instantiaition.