Lots and lots of changes!

AbstractRectangularElement now doesn't call any setter methods in its
constructor so that way its subclasses don't have to worry about
uninitialized fields being accessed (and therefore null pointer
exceptions being thrown) in their setters.

GUISubcontext was changed to extend AbstractRectangularElement as a
GUIContext is by definition rectangular. All other
org.haferlib.slick.gui changes are related to this.

Added a Log class, which is a handy way to output data. It can push that
data to Appendable classes. Log contains a default instance that logs to
System.out by default.