Hand str (not bytes) to DNSPython
Consistently use Client._xmlstream in tests

Also, fixes AttributeError in the real world.
Fix reconnect timeout
Use PyOpenSSL for STARTTLS transport :)
Distinguish between TLSUnavailable and TLSFailure
Implement support for sophisticated post-handshake callbacks

These are passed a callback which they have to call with either an
exception (for an error) or None (for success). Until that callback is
called, the stream remains in the post-handshake state and no data will
be sent or received.
Implement certificate verifiers

These, for now, only use the standard OpenSSL verification.
Implement preliminary DANE support

This is very incomplete. We have no support for usage types except 3, no
support for any selector except 0 and no support for exact match types.