Add delegate to Serialization.mergeSerialization()

delegate supports:
- willMergeObjectWithLabel

Allows the delegate to change the default behavior of merging all objects from serialization1 into serialization2.
Fix _getDomArgument and tests

Tests were testing getTemplateParameterArgument by giving it the wrong parameters, hence the bug with _getDomArgument not being found.
Refactor Component._getDomArgument()

_getDomArgument was being incorrectly used by the substitution.
My guess is that this happened because of the generic name and functionality and lack of documentation.
It has now been renamed (as _getTemplateDomArgument) and repurposed to fit the specific need of the TemplateArgumentProvider.
A copy of the function was put into the Substitution (as _getSubstitutionDomArgument) with the necessary changes for it to work.

The code to find the data-arg is suspicious, I do not believe we need all that machinery, created a bug report about it to fix it in the near future.
Add wrapped DOM arguments tests

DOM arguments (data-arg) can be wrapped by other elements, we allow this so we can use elements like td's (that can only exist in a tr) as DOM arguments to components.
This scenario was not being tested before.
Refactor expandParameters to use templateArgumentProvider

The TemplateArgumentProvider provides an API used to expand the parameters of a template.
Components implement this interface now.
Fix bug when creating collision table

Collision table creation could generate a new label that matched a label of an already processed label of the source labels.
This happened because we were not adding processed labels to the labeler object.
Add resolveTemplateArgumentTemplateProperty...

...to TemplateArgumentProvider that is used when extending the parameters of a template.