Allow configuration of timer scheduling. When using syn within some frameworks (e.g. Ember), asynchronous callbacks need to be managed so they are executed within a run loop. Since syn internally makes use of setTimeout, this makes it incompatible with such frameworks.

This commit supports replacing calls to setTimeout with calls to a configured method such as a framework-supplied method for scheduling timers (in Ember's case, Ember.run.later()). Thus, by just setting

    Syn = { schedule: function (fn, ms) { Ember.run.later(window, fn, ms); } };

before loading syn.js, syn can be made compatible with Ember testing (and similarly for other frameworks).
Merge pull request #32 from matthewp/beauty

JSHint & Beautification
Move feature detection into own modules

This reworks feature detection just a little bit to move the code into
their own modules so they can be seperately tested.

Fixes #30 by moving the feature detection to take place at the beginning
of the document instead of the end.

Fixes #29 by waiting until Syn is finished loading before removing
window.__synthTest. This is interesting bug, it appears (which I cannot
    track down definitively) that the issue is that Firefox isn't firing
the `javascript:__synthTest()` until after the elements have been
removed from the page.
Merge branch 'feature-detection'
Merge branch 'master' into config-timers

Conflicts:
	dist/syn.js
	src/drag/drag.js
	src/key.js
	src/mouse.js
	src/synthetic.js
Syn.support should wrap setTimeout

Fixes an issue with #28 where, when setTimeout is being used, was
throwing a TypeError. setTimeout expects to be called in the context of
the window, but was being called in the context of support. Wrapping a
function around it fixes the problem.
Call parent window from iframe #30

Fixes the test that was failing in Firefox for #30. The old test was
waiting for the iframe to load and then setting a function on the
iframe's window. But Firefox would call `load` after steal had
completed, so it was unreliable. The fix is to set the function on the
parent window and have the iframe call the `parent.synReady()` function.
This guarantees that the function exists before the iframe script has
finished running. Should close out #30
Adds a test for Syn.schedule

Adds a test by utilizing Syn.delay which will always need to use
Syn.schedule. Opens the page in an iframe and asserts that the
overridden `Syn.schedule` is used. For #28
Don't remove window.__synthTest

In Firefox JavaScript inside an href (for example:
    `href="javascript:__synthTest()"` fires well after Syn has loaded.
    Instead of trying to predict when it is "safe" to remove this
    function, we're just going to leave it alone as it is double
    underscored and shouldn't conflict with anything. In the future we
    could create a `noConflict` function that removes this. Fixes
    lingering issue in #30
Merge branch 'config-timers'
Fixes jshint warnings

This commit fixes all jshint warnings encountered when running `grunt
quality`. Fixes #35
Wait until body is running before checking support

The mouse.support code needs to wait until the `document.body` is loaded
before it can do its thing. We were already checking for this, but in
the case where document.body wasn't available we weren't recursing
properly causing a TypeError. Fixes #45
Merge branch 'master' into jshint

Conflicts:
	src/mouse.support.js
Use right URL for GitHub Raw files
Use [].indexOf shim on IE<=8

where [].indexOf is not implemented
Make typeable test compatible with IE<=8

[].indexOf is not defined on IE<=8
old IE support: Replace element.focus with Syn.__tryFocus()

element.focus() will throw in old IE if the element is invisible or
under other conditions.
Remove extra trailing spaces in mouse.support.js
firstElementChild is not supported by IE8
delete window.xxx doesn't work on old IE