Shell challenge problem

We implemented a graphical shell. Needless to say, many changes were necessary to implement this. Here they are, from the lowest level up: Currently, all of this is complete except the last two.