Fix for cancelling setTimeout with cancel()

This fixes following problems:
- The cancel() function wasn't resetting the timer variable (this._laterTimer), blocking future setTimeout calls.
- The cancel() function wasn't clearing the actively running timeout; this caused an unnecessary run() call.
- The cancel() function wasn't calling updateLaterTimer to update the next timer

I added tests for all cases.
Removes unused variables

Removed following variables:
- Queue.prototype.onError - all onError callbacks are provided by the options only; the onError value on the Queue is never used
- time in executeTimers()
Fix for unfulfilled timeout (#86)

This fix will make also sure that run() will be called only when needed by clearing the old timeout when a newer earlier timeout is set.
arg splicing currently causes v8 to deopt the entire function. Lets not do that if the function has the possibility of opting
Merge pull request #95 from stefanpenner/master

arg splicing currently causes v8 to deopt the entire function. Lets not ...
Merge pull request #93 from marcelerz/remove-unused-vars

Removes unused variables
Merge pull request #92 from marcelerz/cancel-setTimeout

Fix for cancelling setTimeout with cancel()
Merge pull request #94 from marcelerz/update-later

Fix for unfulfilled timeout (#86)
Merge pull request #1 from ebryn/master

Sync