Accept context for deferred jobs

Proposed fix for #12

- Accept context for deferred jobs
- Test case for calling defer job with context
- Halt defer wrapper when frame is negative

In the original code, if I call defer with a negative frame, like `fastdom.defer(-1, fn)`, the inner wrapper function will run infinitely. It's a bit difficult to write a proper test case for this scenario, but I'm sure you get the picture.