testing code for odd object trees

Windows and other widgets are organized as a tree of objects, but not so
simple. It seems that the tree is not well formed, which causes problems
when a window becomes a child of another window. For example, the
function widget_absolute_area() can't work properly.

This branch is an attempt to rewrite a large part of code about this.
Merge branch 'master' into rewrite
tree structure in widgets

Trying to build a real tree structure in widgets, each widget saving a
list of children, and recording its parent in parent field in OBJECT.

This time we just did some simplification in the code, utilizing more
code in the widget parent class. Code in the application library should
be modified next.

The change in this commit is NOT TESTED.
add message dispatcher in widget.c

Now widgets can choose to dispatch a message to its chilren. This should
be useful in panel.c and window.c.

The next step is to change the behavior in register_window(). It seems
to actively repaint all the children of the registering window, using
the old object-tree structure.
add comments about window descriptors

I now understand the object-tree mechanism. It may not need total
rewriting at last.
add spinbox, not working at all
spinbox compiling passed

Added a sample in multi_windows program.
spinbox runnable

Spinbox in multi_window program works. Default height is changed to make
it looks like a spinbox. Spinbox widget starts to track changes in its
text_line sub-widget.

Next thing to do is to implement the event subscribing interface like
that of text_line widget.
widget refactor step 1

Make *_init_with_default_style() simpler, moving most of the common code
into widget.c. Remove old code in widget.c.

Strangely, color of widgets changed after this refactor. For example,
background of windows in multi_window program became blue, and before
this change it was green.

Next step is to merge necessary changes from rewrite branch.
Merge branch 'rewrite' into merge-with-rewrite

Conflicts:
	widget/widget/widget.c
remove rewritten child list

Also removing the message dispatching function(s).
remove debug output

The code was from commit dee54671.
add event subscribing interface

Currently only one event is available: SPINBOX_CURRENT_CHANGE. More
events can be added easily as needed.
Merge branch 'spinbox' into better-widgets
adapt spinbox to new coding style

Use common code in widget.c.

Also removing font data from spinbox, as text_line sub-widget already
has it.
fix spinbox crash on unusual input

Spinbox changes its text_line sub-widget's buffer directly, casuing the
asynchrony between text_line's buffer and its ruler_cur, and the cursor
in text_line sub-widget would move beyond the text.

The solution was still ugly, changing the values directly, as text_line
widget still doesn't provide functions to change its text or update its
ruler properly. It seems that text_line_update_ruler() function is also
broken.

There are more fixes on spinbox to come.
improve spinbox's response on unusual input

Spinbox was displaying its old value when the user gives a very large or
very small number, which can be confusing.

It now displays the max value when a very large number is given,
and the minimum value when a very small number is given.
fix header of spinbox

A function was left out in the header.
add support for absolute move of cursor

It seems that EV_ABS is not only for touch screens, but also appear in
virtual machines. This time it's spotted in my virtual machine running
ArchLinux linux 3.11.1-2, 640x480x32.

A very nice neta is included in this commit.
Revert "guessing fix of EV_ABS problem"

This reverts commit dacd35b2952a6304204a1c9549862c840038104e.

Ready to adapt real solution for this problem.