Expression evaluation for overloaded C functions (redux)
This is a redux of Ewan's patch , refactored
to properly substitute primitive types using a hook in the itanium demangler,
and updated after the previous patch went stale
The new SubsPrimitiveParmItanium function takes a symbol name and replacement
primitive type parameter as before but parses it using the FastDemangler, which
has been modified to be able to notify clients of parse events (primitive types
at this point).
Additionally, we now use a set of ConstStrings instead of a vector so
that we don't try and resolve the same invalid candidate multiple times.
Differential Revision: https://reviews.llvm.org/D27223