Add a testing provider

Can be used for testing callbacks, WiP task tracking, etc.
Add task cancellation & documentation
Add some optional debugging code