Python 3 porting fixes

This should address https://github.com/pyca/pyopenssl/issues/3 as well as some compatibility problems pointed out by Twisted's test suite.

The gist of this branch is loosening of the requirements that values which only make sense as sequences of bytes be represented using the `bytes` type only.  Instead, a text type is now allowed and converted to bytes using either UTF-8 (filenames) or ASCII (everything else).