Rewrite seashell.Validator, seashell.Selector, plus other minor changes

Writer.Markdown
1) Bug fix: a enter add two lines, expect one.

Widget
1) Create a widget.feedbackWhen() to specify a queue policy to incur a
bind data change. The policy is also cached and used for future binding.

seashell.Queue
1) add a argument in .flushWhen, to specify the timing to revisit the
queue.

Writer.Container
1) Writer within Container only feedback to UI data at 5 minute
interval.
2) Listen to seashell.ui's save event, to force feedback only save
event is sent.

seashell.ui
1) Widget have a new method .loadDOMConfig(attr) to load attributes
from this.element.
2) Button Widget can specify a click action in DOM, to be performed
once clicked

seashell.Validator
1) Documentation
2) Clearer code structure
3) More clear way to define default result if non-exist
4) Reduce the syntax of seashell.validator, to remove the complexity,
More clear way to define equal to a string or number.
5) Combine "matchType" with "type".
6) Adjust cloud.query to adopt validator changes

seashell.Selector
1）Documentation
2) Re-imagine selector as a proxy of data or set of data, it can:
    a) get/set/remove data
    c) query a set of data matching the criteria
  from client's point of view, selector could be treat as data itself.
3) Much modularized code structure, improved performance.
4) selector now is a dynamic query utility, while selection (the result
of execute a selector) can batch manipulate data.
5) Selection can be further extended to add new functions to manipulate
6) Remove the use of selector in all seashell package. client however,
can still use selector where performance isn't a major concern.
7) Adjust selector test case & benchmark case.