Implement SDD::paths() using a visitor.

This mean that we don’t perform the dispatch on the underlying type manually.
Merge branch 'master' into coroutines_visitor
Merge branch 'master' into coroutines_visitor
Implement Expression using a visitor.