context: make parentCancelCtx iterative
It seems like it was meant to be this way. There was already a for loop, but then it made a recursive call instead.
LGTM=sameer
R=golang-codereviews, sameer
CC=golang-codereviews
https://golang.org/cl/113540044