Fixed absolute import issues
Use six to import urllib and StringIO
Use six.with_metaclass to add metaclass to Page
Replaced occurances of 'unicode' with 'six.text_type'
Replaced occurances of 'basestring' with 'six.string_types'
Replaced occurances of 'dict.iteritems' with 'dict.items'
Cast email address to bytes before hashing into gravatar url
Replaced __unicode__ methods with __str__ methods
Another unicode replaced with text_type
Use python 3 print function
Fixed python 3 incompatible method for concatenating dictionaries
Make sure that we are not iterating over tag.attrs.items()

This prevents a crash on Python 3 when we modify the dict while iterating over it