I apologize for this code but it's something of a performance
bottleneck (at least I think so) so I decided to do it with proper C
string handling in all it's godawful ridiculousness, memmoving, stack
buffers and all.

Anyway... Don't treat templatized parameters as something we should
optionally remove from symbolNames.

E.g.

void foo(List<int> bar)

doesn't need to exist both as:

foo(List<int> bar)

and

foo(List bar).

This patch will do that and fix some erroneous stomping on the wrong
bytes in the process.

For an example of something that went wrong, check out

https://github.com/Andersbakken/plast/blob/master/src/Plast.h

at 7c8f7d87e2ae6638d6740b5c356fffa762ee1e91

It showed up thusly:

$ rc -S JobMessaJ
JobMessaJobMessage::JobMessage
JobMessaJobMessage::JobMessage(uint64_t, const String &, const List &)
JobMessaJobMessage::JobMessage(uint64_t, const String &, const List &)::args
JobMessaJobMessage::JobMessage(uint64_t, const String &, const List &)::id
JobMessaJobMessage::JobMessage(uint64_t, const String &, const List &)::preprocessed
$ rc -S JobMessage::JobMessage
JobMessage::JobMessage
JobMessage::JobMessage(uint64_t, const String &, const List<String> &)
JobMessage::JobMessage(uint64_t, const String &, const List<String> &)::args
JobMessage::JobMessage(uint64_t, const String &, const List<String> &)::id
JobMessage::JobMessage(uint64_t, const String &, const List<String> &)::preprocessed