loadCheckpoint/createCheckpoint should use bytes

In python2 this isn't an issue, but in python3, `createCheckpoint()` returns a (unicode) string, which doesn't make much sense. The `bytes` type is a much better fit for opaque binary blobs, because there should be no correspondance between the bytes in the checkpoint and any ASCII/UTF8/etc characters.