Allow multiple levels of environment change sets

* Maintain an index within the environment change set.
* Only remove unplaced units when committing, not when clearing.
* Only show the current index of changes in the deployer bar
this could use some comments as well. There's a bunch of return points here and it takes a lot of reading to catch what each is for.