Refactor how we handle call_count limits

* Raise right away
* Move to allowance so you can limit the number of times an allowance is
  called
* Add new allowance tests