[fixes #1571] Prevent simulated events from causing nested run-loops.

It turns out, jQuery's simulated events are triggered
synchronously rather then asynchronously. This means,
in some circumstances, when fired they can cause
nested run-loops. This can have some very unexpected
consequences.

@krisselden / @stefanpenner
Add Ember.run.join

Please note, this is not for normal usage, and
should be used sparingly.

@krisselden / @stefanpenner
use Ember.run.join internally for App#reset