Done seashell.animate framework. and add a seashell.keyboard service

seashell.animate & seashell.transit
1) build seashell.animate based on Firmin library, convert Firmin root
level object to local variable.
2) allow .then(), to trigger callback after animation complete
3) Allow run predefined effect in string name instead of css properties
4) Added a few effects
5) modify effect to function based, allow effect and transition to have
options
6) new .idle() function to stop animation for certain duration before
proceed
7) Set element's CSS property directly when no duration specified. (no
change, default behavior when CSS transition duration is 0)
8) seashell.animate based on CSS transitionEnd event rather than window
timeout.
9) enhance seashell.animate to support backface visibility and
perspective
10) Add seashell.transit to animate two or more element to accomplish a
transition.
11) Slow all animation by 5X when in debug mode and left SHIFT key is
pressed
12) Cleanup messy code in seashell.transit. Also consider using a
deferred object for callback attachment. in both animation & transition.

Test cases
1) Complete test cases for seashell.animate & seashell.transit. Named
test-animation.html

Seashell.keyboard
1) add a global object to monitor key stoke, based on Mousestrap
implementation.
reconstruct seashell folder structure

reconstruct seashell folder structure, to better reflect usage &
importance of each module
seashell 0.3. Major change on data framwork. replace Value/List with seashell.Type.object & seashell.Type.list

Raise seashell Version to 0.3, as major work complete on data
structure: replace previous Value/List "View" to  so called seashell
object (object or array), including meta, message, event.

seashell.options
1) rename seashell.option to seashell.options. to better reflect its
collection nature

seashell.type
1) Re-model seashell.type, to allow similar define() to add new type
2) Remove assist/unassist from type basic: 1) type assist is done
through object creation instead. 2) type unassist is forbidden, as
client should not cast a seashell object to another type, create a new
object instead.
3) rename metaOptions to metaAttributes. Modify option() to only return
data from type.options.
4) remove .def() from type. .def() is useless at current stage, try to
revisit and develop a mature version when framework on
inter-relationship is well considered.
5) Remove .meta(),. Meta() move to seashell.Meta() to create. ;

Overall
1) standardize interface define, rename to Animate.define, type.define.
document it in interface.md.
2) Consider meta, message, event, error are all a typed seashell
object.
3) a seashell object have one special property "fn". anytime if want to
invoke extended functionality. call fn instead.
Usage:  message.fn.adapt(media);
4) seashell.extend should work even when it's a seashell object.
5) Remove use of selector in seashell object & array;
6) Perform a overall house-keeping, to utilize new object.fn capability.

Seashell.cloud
1) Cloud always preserve original copy of meta, and always preserve
original copy of data.
2) do not force convert meta's data to pure object (object without
__proto__). Leave it as it is, as client may convert it to typed object
as they like.
3) Convert all newly added meta in cloud to an seashell object.

Meta
1) forbid use s2.upload to update meta with existing id but different
reference copy to cloud. It's to prevent illusion that user may expect
the new meta is same copy as in cloud, and prevent user to use it to
retrieve latest data.

Type.Object
1) use "is" property to specify main type of data
2) all seashell object come with a fn property (implemented via
prototype), client can access via syntax:
Seashell(obj).fn.act1().act2();
3) redesign value & list API to make it more straight-forward/ hide
detail from user /easily extensible.

Meta & Message & Event & Error
1) Convert meta & message & event & error to be a seashell object, with
type assisted functions.
2) Copy existing meta/message/event/error function to type-assisted
functions.

seashell.Type.array
1) Build seashell.Type.array. And allow common array like functions

Test Cases
1) update existing test cases on Meta / Message / Event / Error
2) Added test cases for Type.object.