Add the Grid widget.

This commit also refactors the container widget hierarchy a little bit,
to remove a lot of code that was being duplicated between Container and
Bin.  Previously Container used a list to store its children.  Now it's
agnostic to how the children are stored, and just depends on being able
to iterate through all the children using __iter__.  Container also
provides some utility methods for adding and removing children no matter
how they're ultimately stored.  This allowed Bin to be implemented as a
Container, which meant that a lot of duplicate mouse event code could be
deleted.  It also made the Grid widget easier to write.