Better error handling around a method call

- Make sure not to double-resolve a future (using two different
  techniques!)

- Try/finally cleanup some resources
Nonreactive callback for range.removed code

When a range is removed, if the component instance has a destroyed callback
defined, updateTemplateInstance is called and the destroyed callback is called
in the context of the updated templateInstance. updateTemplateInstance calls
getComonentData() which can create a reactive dependency. This doesn't seem
necessary since we're removing the range.

The problem surfaced in iron-router in combination with using the {{#each
helper. The each helper is currently the only builtin that adds a destroyed
callback. If a previous layout used {{#each and a new layout rendered, the
previous range would be removed in the new computation. Then, if we updated the
data context, the dep would change and the entire new layout would be rendered
again :-(.

cc @tmeasday.
Merge pull request #1904 from EventedMind/make-removed-nonreactive

Put range.removed code in a Deps.nonreactive callback
Fix nested autoruns in Blaze rendering

Should address bugs where helpers fire more than expected, and also prevent wasted re-rendering of templates that are being destroyed anyway.

See: https://github.com/EventedMind/iron-router/issues/478
Improve Deps performance by not using _.bind
Remove unused Deps._makeNonreactive
Merge branch 'devel' into shark