Make just one call to ffi.cdef for most of the definitions

On master HEAD I get these results (extension module already built):

```
$ time python -S -c ''
real    0m0.020s
user    0m0.004s
sys     0m0.000s
$ time python -S -c 'from cryptography.hazmat.bindings.openssl.binding import Binding'
real    0m0.020s
user    0m0.012s
sys     0m0.004s
$ time python -S -c 'from cryptography.hazmat.bindings.openssl.binding import Binding; b = Binding()'
real    0m1.460s
user    0m1.268s
sys     0m0.012s
$ 
```

On the branch, these

```
$ time python -S -c ''
real    0m0.009s
user    0m0.000s
sys     0m0.004s
$ time python -S -c 'from cryptography.hazmat.bindings.openssl.binding import Binding'
real    0m0.023s
user    0m0.004s
sys     0m0.008s
$ time python -S -c 'from cryptography.hazmat.bindings.openssl.binding import Binding; b = Binding()'
real    0m0.555s
user    0m0.488s
sys     0m0.012s
$
```

I admit I don't really understand the comment above the code I changed, though.