Remove Record.walk

Undocumented, difficult to use, replaced by VisitorPattern.
Refactor Visitor class into VisitorPattern and Visitor

The problem with the Visitor is that it didn't work on visiting input
and returning types.  Completely change the API, splitting it into an
instance which is specific to the visiting (the Visitor) and the class
methods which define what will happen along the way (the
VisitorPattern).
Bump version & amend docs for release
Merge branch 'maint'

Conflicts:
	CHANGELOG.rst
	setup.py