Support Python 2

- Use the u'' prefix where needed. It is re-introduced in Python 3.3 and
we only support Python 2.7.3+ and Python 3.3+
- Add encoding lines (# -*- coding: utf-8 -*-)
- Use codecs.open() instead of open() to force reading files in utf-8