Introduce use of six to address Python 2 / Python 3 compatibility issues.
Merge remote-tracking branch 'origin/master' into python3
Ensure we use 'six' for all iter* operations.
Add 'six' to dependencies.
Various Python 2 to Python 3 compatibility fixes.
Remove an unnecessary 'if' clause from 'snapshot'.
Lose the list comprehension, which was creating an extra cell in Python 3.
Add Python 3.3 to .travis.yml file.
Use double-underscore versions of func_* attributes throughout.
Update annotations for Python 3.
Add support for __annotations__ and __kwdefaults__ on function objects.
Add test for __dict__ attribute on functions.
Merge branch 'master' into python3
Undo accidental spacing change.
Merge pull request #14 from mdickinson/python3

Make codebase compatible with Python 3.