Descend using `rewrite`.

Descending the directive tree is now performed using a recursive call to
`rewrite`. There is no longer a descent of the directive tree internal
to the `rewrite` function.