Visitor API revamp

:no_good: - tests required, docs only half-updated, but potentially interesting to @ibiternas and @rbm