Moved example UserVisitor to a public class,

because there's no particular reason it should be a private class (it has
good enough invariants to be public). Additionally, it's less confusing
for documentation purposes, because this enables the documentation to talk
about the UserVisitor in isolation from the User class, without confusing
the reader with the fact that it's a private class.