Addition of lists for symbols and types. Generate new case classes

Instead of using the copier, it seems that it could be more
appropriate to generate new case classes, as they won't
store the data not needed usually copied.

Also, the algorithm now generate list of unique types and symbols,
but we would need to generate somewhat a dictionary to reconstruct
properly the tree during decompression. We could for instance zip
elements from those list with their positions in the list, i.e.
in the tree exploration in BFS order.