Rename deserializeWithElement to deserialize
Rename initWithSerializationStringAndRequire to init
Change initWithRequire to init and add require per object

init has a second parameter to receive a table of require objects to use per object.
Rename init and instantiate functions of MontageInterpreter

- initWithSerializationAndReviverAndObjects(AndElement) to init
- instantiateWithElement to instantiate
Rename initWithRequire to init and accept a require per object
Add require per object parameter to init
Add functions to customize each object deserialization

- setObjectMetadata(label, _require, effectiveLabel, owner)
getObjectMetadata(label)
Change expandParameters to return a richer result

Instead of just returning the labels collision table it returns an object with the labels and element ids that were inserted from the arguments template.
The return is now {labels, labelsCollisions, elementIds, elementIdsCollisions}.

Changed the repetition to use the new result and setup the metadata per object along with the external objects for each template arguments when expanding the inner template into the iteration template.
Fix initialization of Deserializer.
Change List to use template parameters