Change collision label detection to include template properties

Specific logic is needed for template properties because they need to be synchronized with the component label they correspond to.
Add Serialization.clone()
Add Serialization.hasSerializationLabel()
Add Serialization.isAlias()
Cache serialization labels
Refactor _createCollisionTable()

It receives the collision table to be filled instead of returning it.
It returns if any collision was found.
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.
Implement resolveTemplateArgumentTemplateProperty...

...in Component.
Add repetition integration tests for aliases
Rename componentName to componentLabel
Remove path from Alias

We're not able to support it now, we only change an frb expression by changing its component label, not the path.
Fix comments from code review
Merge pull request #1337 from @aadsm

Expand template parameter properties