Added new UI layer and linked list

The UI layer should take the responsibility for managing all of the
UI objects (windows, bitmaps, message boxes, etc) which makes the main
code a lot cleaner. I don't want to write an entire generic graphics
library, so I'm trying to keep this as simple as possible.

The linked list implementation is also very basic, and hopefully
will stay this way. I think it's not complete yet, and will be updated
according to need.

Signed-off-by: Joel Nider <joel@nider.org>
Moved UI components to a separate file

Also made it more generic. This was needed to have an easy life
when creating many UI objects such as menus and popups, which was
starting to get out of hand with an ad-hoc approach.

Signed-off-by: Joel Nider <joel@nider.org>