Prepare for py3k

Make a start toward #91 (we are still blocked on the `protobuf` dependency).

Selectively apply patches suggested by 'python-modernize --six-unicode'.

Tweak the pylint messages suppressed in test/demo code to work around issues involved in "straddling" Python2/Python3:
- The `six` module does some import hackery which confuses pylint when used in a virtualenv:  suppress `import-error` check (only in test/demo code).  Note that the check is redundant (we have 100% coverage) as well as failing bogusly.
- Rather than introduce `from __future__ import print_statement` in demos, just use `print()`, which is legal in Python2, and forward-compatible to Python3, but causes a `superfluous-parens' warning under pylint:  suppress that warning (only test/demo code).
I prefer the explicit use of keys, sometimes it's easy to make a mistake in these cases.

The py3k issue was that a set intersection with a `dict_keys` object does not work? It doesn't seem to be an issue in 3.4

```python
 $ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> set([1, 7]).intersection({1: 2, 3: 4}.keys())
{1}
```