type-names: generate a string representation for every kind of type

Identified types:
- basic types
- with modifiers (const, *, &, &&)
- arrays with any dimensions (references and pointers)
- functions (reference and pointers)
- pointer do members (data and function)

Is there anything missing?