* Support `.mustache` template files in `packages/new-design/shared/`, just as in `packages/new-design/templates/*/`.
* Only render files with an explicit `.mustache` suffix.
* In `downloadLabFiles`:
* Don't try to write response failures into the destination file. This was failing because it wasn't wrapping the error in `{data: ...}` to imitate a successful axios response.
* Actually wait for `writeFile` to finish. Don't try to add to `promises` after they've already been collected with `Promise.all`.
* General refactoring (really leaning into Promises here...)