debugger substitution feature

Update to the current debugger to show rules applied, and the substitution at every transition. Do not review yet. 
I like the idea of having a step function that returns a RewriteStep object, but you should refactor it to be the interface for the existing step function. We don't actually need an extra method in the API.