Fix the way module loader checks for loaded modules

It was always calling require.async for loaded modules that lived outside the application require.
Check to see if template resources are loaded

Skip a promise if the template resources are already loaded.
Add module preloading to the serialization of a template
Cache createTemplateFromElementContents

It's used to create the innerTemplate, this caching system is important for nested repetitions.
Add _addToDrawList to DocumentPart

Since DocumentPart acts as a parent component it needs to support the same interface, it will ignore it though.