Allow __call__ to be mocked

* This wasn't working anywhere, I'm not sure why but python takes call
 directly off of the class not the instance :(.
* Added a proxy method to proxy __call__back to the class if it has been
 mocked, otherwise we call the original method.
* Everything is restored at teardown.