feat(template_cache_generator): Support custom template path resolution

Closes #923
refactor(dccd): Simplify both the interface and the implementation

Closes #909
fixup! fix(change-detector): handle double.NAN for collections (in JS)