Fixed RemoveLayers()

The previous implementation of RemoveLayers() could yield incorrect
results, and also crashed unexpectedly.  This should solve both problems.
Event Handling Tweaks

Two changes in this diff.  I replaced a lot of manual event condition
checking with a couple of helper functions to check for keypress/mouse
click events.  I also added a "Quit" option to the main menu, quit on
escape press from the main menu, and stopped mouse clicks from
propagating past a Window.
Added Button Widget to ui, Close Button to About Layer

This revision adds a Button widget as a sub-package of ui.  It also
adds one of the new buttons to the about layer to close the dialog.