Refactor API to be easier to use

* `filter` is now called `shouldIntercept`, which is hopefully a much clearer
  name. Its signature and usage remains the same as before.
* `completeCallbackWrapper` has been replaced with `beforeComplete`.
  Rather than requiring users to essentially build a function that took
  in a function and returned another function that had to be sure to call
  the original function--I am confused even explaining that--the function
  now takes in an object with named values referring to each of the
  completeCallback arguments, and can simply modify the values of the
  ones it wants to change in place.

Rewriting the test code to use the new API was very satisfying. It is still
a pretty low level library, but I feel like it is *much* easier to user now.