Scratch became the environment that I was going to use for teaching programming to my rugrats. It has almost all of the features that I was looking for. I guess my only gripes is that since it was geared towards younger students, they didn't include the ability to make functions. You can get away with it by using events and global variables.
And this leads to my biggest problem, you can't expand it. As a "teacher", I would like to be able to make my own action blocks that isolate complexity.
The MIT team has added some specialty bricks for connecting a Scratch program to their hardware sensor boards (which has some similarity to a Lego robot), but you can't easily extend it yourself.
But they added an easy way for the children to share their projects on a social-networking site made for Scratch, and this is fantastic. Children can see what their friends are doing and download their work and expand on it.