Since we don't download Node until the first time source-nvm.sh is run, that means Node gets downloaded in the prod-build step.
prod-build needs to rerun whenever any files change, but Node should only need to get downloaded when the version changes.
This diff uses Docker build caching to call source-nvm.sh earlier, so that we can make it cheaper to rebuild when a source file changes.
Depends on D4213
We could probably go back to using isPinned property here. The thing we undid in D8097. This would make the code more readable, but it's up to you