add drawBox(), drawBoxShade() in Drawable, there're copied from blender source
add kerning calculating in TextBuffer
add unit test for AbstractButton
fine tune some corresponding code