Add retrying of method passed in (and some refactoring).
- Add optional parameter to throw the exception after retries (default false). This also allows us to turn off the final (unhandled) exception after the retries have exceded (so it doesn't cause all of our tests to fail).
- Add retrying based on number of retries returned from the ExceptionService
- Use interface for our mock so we can NSubstitute it and swap out what exception it throws etc.