checkbox widget

Most of the code is copied from button.{h,c}.
add checkbox into compile system
add callback functionality to checkbox

The custom callback functionality used in other widgets like button
mixes message dispatcher with a `real' custom callback function. In that
mechanism, users even need to consider the message dispatching problem
which should have been internal to the widget implementation.

Checkbox widget now have one more user-defined callback function and a
void pointer to user-defined data (which can be used to distinguish
different checkboxes). The user-defined data pointer gets passed to the
custom callback function.
fixes and format adjustment

Checkbox widget can almost work properly now. Sample program
multi_windows.c can now show a checkbox on the top left corner.

But the initialization with default style need to be checked again for
other widgets, as many of them just ignores the default style and leave
the widget uninitialized if the user-defined style file is not valid.