GUI: Add SelectList, component size w/o layout

* A SelectList was added, it behaves similar to List or JList. It
supports any type of object by displaying its toString() value.
* If the container that a component is getting added to doesn't have a
Layout associated, the component's size is set to its preferred size.
This is rather important to note, as it requires some method calls to be
changed in existing games' GUI codes.