mangling: Remove duplicate code for BYREF/CONST on function results
Fix various issues of internal procptr mangling

- bydesc array parameter dimensions weren't being encoded (e.g. array()
  and array(any), or array(any) and array(any, any) were seen as the same)

- Function result CONSTness wasn't encoded, and will be encoded now. This
  means two function pointers that differ only in function result CONSTness
  are seen as different now. This matches the overloading rules and the C++
  mangling.

- BYVAL parameter CONSTness was encoded, and will no longer be encoded now.
  Two function pointers that differ only in a BYVAL parameter that's CONST
  in one and non-CONST in the other, are now seen as the same type, as in
  C++. Overloading isn't allowed based on BYVAL parameter CONSTness either,
  and the C++ mangling ignores BYVAL parameter CONSTness too.
Check Bydesc dimensions in symbIsEqual()
Remove buggy varargs special case from symbIsEqual()
Check Bydesc dimensions when overriding virtuals
Fix symbIsEqual() to treat different forward references as different
Share some code between hAreMethodsCompatible() and symbIsEqual()