Major work on seashell.ui framework. Establish how widget is defined, and created several basic widgets based on Bootstrap styles.

Source
1) Unify source define API, to use seashell.Source.define. Also unity
source creation API, to use seashell.Source(name, config). This is to
in-line with other seashell components like Type, Seashell, Widget,
Animate, Transit;

Widgets
1) Define structure of widget
2) Standardize the way widgets communicate with roles and seashell.ui
3) Develop a data bind mechanism, so Widget is bind to a particular
data feed, and updates itself whenever data feed updates. It's
implemented at type level. Widget individually do not need to care
about the bind process. It receive a new data feed whenever the binded
data get updates.
4) Build base, button, menu widgets
5) enhance button widget to support drop down & split button
6) Add input widget, allow user to adjust a data. Whether it's number,
string, boolean, date or a narrowed selection. Depending on the nature
of underlying data, a input widget can be a text box, a radio button
group, a checkbox or a dropdown button. It's utilize other widget to
represent. Current phase only support dropdown button style, to select
from a pre-defined data set.
7) Further simplify widget's structure. To create a widget based on
pre-defined structure. Bring much concise and clear code.
8) Separate dropdown button, split button from button widget, create a
"button.dropdown", "button.split" instead.
9) build toolbar widget based on bootstrap code. No layout required, as
only obey default css layout.
10) Enhance button widget, to allow toggle a button's status
11) Create a input.button.checkbox widget, map to a boolean value
12) Create a textbox widget, map a string to a input text
13) Add a select widget, for HTML <select>

seashell.Type
1) Add a "defaults" property to object derived types, so the default
type creation or type cast will defaults some property of the value if
value do not have them in place.
2) Add a type option, to create fns under object directly, as well as
under object's "fn" property.
3) Remove 2) directFn. If a type is so complex to use directFn, better
find other way to implement. DirectFn brings confusion in such case.

Separate seashell client script to two:  seashell-client.js &
seashell-ui.js. Also include bootstrap & mouseStrap & mustache as part
of seashell-ui. The only external dependencies is jQuery.

Mustache
1) Import Mustache into seashell-ui.js. As seashell standard template
engine.

seashell.Events
1) Add a utility seashell.Events to support Widgets.

seashell.compare
1) a D3 like data-join process, with enter / exit (possible a third
update()) chain-able function.  Compares two objects property by
property, or compare two arrays index by index. enter(), exit(),
update() all accept a callback function to do the work.
2) Also update existing code like copy and cloud.update to utilize this
new capability.
3) seashell.compare is heavily used in Widgets to compare new render
data with previous, and only update those changed.

seashell.transit
1) transit do not append new element, but add new element right after
current element instead.

seashell.ui
1) Laydown initial framework of seashell.UI
2) Add widget management & initialization extension
3) Add eventing extension

Test Cases:
1) Add a test-widget page to test all widget rendering. also
data-binding.