Make sure the deserialization captures unit errors into rejections

A throwing unit deserialization wasn't being captured as a rejected promise when deserializing.
Add template property bindings in deserialization

Ignore bindings to template properties that can not be resolved yet, this happens with repetition's content.

Fail on template properties that refer components that do not exist in the serialization.

Since labels can now have a colon we can use this to speed up template property's look ups during bindings by creating an entry in the serialization that matches both component and property name like "repetition:iteration": {}. It's less flexible because the exact right label needs to be computed but faster during template creation and instantiation.

Also improved error detection on bindings to components that do not exist in the serialization.