Put event datatypes in a separate header file, fgui_event.h
Make fgui_widget_init() return a status code

Initialization can fail if the list of children in the parent widget
gets full.
Make all <widget>_init() functions return a status code

Let errors from fgui_widget_init() bubble up through all the
<widget>_init() functions.

(Initialization can fail if the list of children in the parent widget
gets full.)
fgui_application.c: add missing #include "fgui_widget.h"
Move the prototype of fgui_set_pixel() to fgui_primitives.h

From a dependency-perspective, it seems better to move the prototype of
fgui_set_pixel() from the top-level fgui header file, fgui.h, to the
leaf node of the headers, fgui_primitives.h.
fgui_test.c: use a LINEHEIGHT macro for readability

Instead of coding all the y-pixel offsets in absolute values, define a
LINEHEIGHT macro so that we can put widgets on the screen using line
numbers.
fgui_test.c: change label "filled circle" => "circle"

The circle that is drawn is not filled :-)
Rename "test" program to "demo" program

I would like to populate the tests/ directory with unit tests, but now
the fgui_test program is just a demo, so call it that.
combobox: "clean up" state if focus is lost

This fixes the combobox widget so that it doesn't stay open when focus
is lost.
label: set the draw callback function
fgui_application.c: add function to draw all child widgets
fgui_demo: draw the widget hierarchy with fgui_application_draw()
fgui_application.c: improve focus chain traversal

Don't assign focus to widgets that don't accept it (bug fix). Also
refactor the code a bit.
Add enums for Unicode C0 Contols and Basic Latin codes (=> ASCII)
Use the new Unicode/ASCII event enums

Provide a small sdl_keysym_to_fgui_key() mapping function for the fgui
demo program.
fgui_event.h: keep keycodes below 256 (fix lineedit bug)

Unicode Private Use Area (PUA) seems to be for printable characters, so
move the custom (arrow) key codes into a control code area, where
isprint() does return 0.

This fixes a bug in lineedit where arrow keys would not move the cursor
but insert non-printable characters into the buffer (isprint() fails).
CMakeLists.txt: enable CTest testing

With enable_testing() activated, tests can be added with
add_test(testname exename args).
Start adding clipping functionality

Clipping is needed to prevent widgets from drawing outside their
intended display area. The widgets that really need this are the ones
that deal with text. (See how the lineedit widget in the demo displays
text outside it's "box" when enought characters have been entered.)

* Create a rectangle datatype in fgui_types.h
* Make fgui_draw_point() take an optional pointer to a clipping
  rectangle
* Make fgui_draw_string() also take a clipping rectangle
* Add clipping to lineedit widget

At this point, only do clipping in the lineedit widget. Other widgets
will be patched later.
Let all widgets use base widget for positioning

Teach struct fgui_widget (base "class" for widgets) of "width" and
"height" properties. Group the 4 properties (x, y, w, h) into a
rectangle struct. And then let all widgets use that instead of their own
sub-class properties.
button: enable clipping (of text)