Workaround for translation bug that allows PRIM_YIELD to reach codegen.

Added the new function removeUncalledIterators() and a call to it at the end of
lowerIterators().  The new function looks for PRIM_YIELD calls that remain in the tree and
removes the functions that contain them.  The operative assertion is the if these
functions *had* been inlined by expandIteratorInline(), then the yields they contain would
have been replaced.

The correctness of this approach also relies on the more subtle assertion that the "dirty"
functions are not called directly.  In my investigation, I only saw the error case come up
when for loops were expanded within the body of _coforall_fn() helpers.  If such a
function contains a yield, it is expected that it will be called in the context of a for
loop, and will therefore be inlined.

Revised some comments, based on my improved understanding of what expandIteratorInline()
is doing.

While there, I cleaned up the interface to expandBodyForIteratorInline() by pushing the
collection of asts inside that function.  Since the function is called recursively, this
makes it clearer that the asts being traversed within eah invocation are merely the body
of the passed in iterator block (ibody).