Focus only when animation is over

This fix prevents a nasty bug where the handle (header) was something
clipped during the animation. This bug first appeared in 2.4.

The problem with this was that layout was invalidated when looking
for the first visible input.

A lot of ad-hic regression testing has been made in order to make sure that
nothing got broken.
Put try/catch in their own function

This prevents callers from being put into un-uptimized hell, where
any function that contains a try/catch will never be optimized
by js jit compilers (V8 in particular)
Making the delay setting uniform accross plugins

This commit introduce a delay setting for the collaspible and
duplicator plugins. Orderable already had one.

This commit fixes the comment documentation and also insure that
every timer gets the appropriate setting value.
Collapsible optimizations

This commit does not modify the actual behavior of the plugin.

The only thing it does is apply multiple optimizations, such as

1. Minimize layout trashing (read than write)
2. Minimize timer usage
3. Minimize side effects when trigerring events.
4. Optimized how the cached height values (min/max) are used
5. Centralized and jQueryfied how values are get.
Duplicator refactoring

This change removes almost all sizing code from the duplicator.

Sizing related to animation is delegated to the collasible plugin.
Cross-browser request animation frame

This adds a request animation frame api as a public utility.
Orderable optimization

Doing ui related things into event handlers such as mousemove or scroll
is a bad idea since the browser fowards all OS events it receives to javascript.

This creates a situation where multiple events are received during a single paint.
This is useless and inefficiant since the outcome of most handler is discarded by the last
received during the frame.

The correct way to do it is by calling request animation frame in order to delay execution
of the js and not block the UI thread.
new build
fix wrong indenting
Introducing 'setsize.collapsible'

This new public api allows updating the current cssom
values by reading from the cached values. This permits
delegating the sizing to the collapsible from outside.
Delegate sizing to collapsible

Using 'setsize.collapsible'
new build
fixes session cookie never empty. Fixes #2107
Merge pull request #2123 from creativedutchmen/sess-fix

fixes session cookie never empty. Fixes #2107
Collapsible must ignore destructor clicks

This avoid a conflict where a click on the destructor would make the
collapsible expand the item.
Apply transformation only when needed

This prevents non-animated item to ignore any transition
Ignore some events

This prevents the focus event from being triggered when
items are being animated all at once.
More js optmization

1. Made collapse and expand actual function we can call: this removes
a lot of overhead that was created with usign events for internal communication.
All events were kept for backward compatibility and the global public api does not change.

2. Saving into localstorage now only occurs once, and it delayed: This added a lot
of extra work since local storage was accessed once by EVERY item in the collapsible.
Since the save checks every item, we ended up with O(n^2). With this, we still have
O(n) for events handling but we drop to O(1) for local storage access.

3. Change some jquery selector to be more precise.
new build
Added cancelAnimationFrame utility

Like its sister method raf, craf cancels a previously registered frame.
It basically works the same way as setTimeout/clearTimeout