Use Python 3 to create native migrations

Native migrations created with Python 2 differ from ones created with
Python 3. More importantly, they failed when used in Python 3, but not
vice versa. This is caused by field names being marked as byte strings
when using Python 2.

This rewrites the native migrations, which probably isn't a bad thing
either, because they were created with a pre-RC2 version of Django, and
Django 1.7 has since seen a few more migration-related fixes.

It's likely Django now does the correct thing and generates Python 2 and
3 compatible migrations under both versions of Python.
PEP8 fixes

This catches a call to unicode() and removes the unnecessary future
import for the print function.
Don't rely on message being present on Exception

e.message has been deprecated since Python 2.6, and doesn't exist in
Python 3. Unfortunately, there's
no good generic way to get an exceptions message; e.g. Django's
VariableDoesNotExist sets e.msg, whereas ValidationError does something
quite complex.
But we rarely use the exception message, and in those cases, a simple
cast to the text type is enough.