Make sure shuffling doesn't cause index changes to propagate to levels referencing a deeper index

Shuffling propagates new indices through child fragments, which was causing nested iterations to have their indices wiped out. In order to track which sections are iterative, this adds a `currentSubtype` to the section which gets set upon re-evaluation. The `currentSubtype` currently only distinguishes between `IF`, `EACH`, and `WITH`. If rebind is called on a section that is and `EACH`, the index is removed (set to `undefined`) when rebinding its children so that the children don't get the index from upstream. The `Fragment.rebind` is also updated to ignore `undefined` index changes.

This fixes #1457