Fail at inittime in case of duplicated placeholder names.

The missing test was for :param AND *splat
Replace a map by struct: 20% speed improvement