Add ALPN support.

This pull request adds support for Application Layer Protocol Negotiation, the spec-standardised version of NPN.

This was added to OpenSSL in v1.0.2. The keen eye might detect that OpenSSL v1.0.2 is only in beta at the moment, which means that unsurprisingly this doesn't work right now. I'm opening this Pull Request to track the work: I don't expect it to be merged any time soon.

The relevant `cryptography` support was merged in pyca/cryptography#1105.

This is the second half of #79.
First line is too long here - its a nit but perhaps

"""Set the callback to handle ALPN protocol choice.

:param ....