Refine seashell.ui. Complete UI Demo

seashell.ui
1) seashell.ui.select support more syntax.
2) Improve performance for seashell.ui.select by caching, so it can be
used extensively used without hitting DOM.
3) merge .prop(), .set(). Simplify .prop implementation across
object/widget/dataList/widgetList type. Slightly improved performance
by not save when value is the same.

seashell.widgets
1) Enhance navbar widget to allow register "click" event before adding
items, via using relayed event.
2) Allow to define widget's custom functions in wrap, via fns field.
3) Enhance all existing widgets to support icon. Such as "button",
"nav", "text", "menu".
4) Enhance navbar widget to support right align

UI Demo
1) Complete UI Demo.
codekit configuration change