Consistency in warnings for ambiguous/redefined templated constructors

Constructors used to warn with:
  Warning 302: Identifier 'Json' redefined (ignored)
But now warn with:
  Warning 322: Redundant redeclaration of 'Json'

Note that 320 is a warning that is shown by default and 322 is a
hidden warning by default.

The warning is now consistent for both templated methods and constructors
that are deemed redefined. See cpp11_template_parameters_decltype
testcase. This testcase has been enhanced with a runtime test to check
that the workarounds for overloaded templated constructors/methods do
work.
3 files changed