Add information about moving to `six`

As a follow-on to #1474, this adds a section about porting code using
`2to3` to using `six`.  It's based on a similar document in
matplotlib, and includes descriptions of the less obvious things that
were come across when converting the whole of matplotlib over to using
`six`.  There may be other gotchas people come up with, and we can add
those over time, but I thought it was worth having the "bones" of this
in, even if it might be a little incomplete.

It also updates the coding guidelines to mention that we prefer using
`six` going forward.

Updates the examples to be compatible with `from __future__ import
print_function`.