Async template updates

Allow either/all of:

 * contents (template)
 * args (template parameters)
 * result from a template

to be promises.