window: add struct rtgui_win.app

We can use rtgui_win.app to tell which app a window belongs to. This is
convenience for inter-thread communication.
basic model/view prototype
update plot/plot_curve to new model/view framework
fix plot_curve
widgets/mv_view: add rtgui_mv_view_foreach_in_model
refactor plot and plot_curve
widgets/plot: fix xy calculation
examples/demo_plot: port to new API
font_hz_bmp: add _rtgui_hz_bitmap_get_font_ptr
add perfect_hash

This is the original version of perfect_hash, which is get from
http://ilan.schnell-web.net/prog/perfect-hash/ . The license is GPLv2.
let perfect_hash.py could deal with unicode keys
perfect_hash: add extra_subs parameter to generate_code
add basic code that could generate the minimal perfect hash code
building.py: add PreBuilding scheme

You should add the pre-building actions via
RegisterPreBuildingAction(act). act is a function which takes no
arguments. Mutiple actions can be registered and they will be invoked
when PreBuilding() is called.

PreBuilding should be called just before env.Program.
stract_cjk.py: add get_font_lib API
move mph code into common
move examples to demo/
first working version
rtgui: ignore the auto generated files
font_mph-tmpl: fix a compiling error by removing unused headers