Add type visitor
Move existing C++ mangler into a visitor class
Merge pull request #3007 from yebblies/cppmangle

[DDMD] Move existing C++ mangler into a visitor class