Resolves #761.

ssl passes 46/168 tests. 108 fail due to inability to start a socket and another 14 failing with attribute errors due to missing library functions.

### Checklists

- [x] Add a [CHANGELOG](https://github.com/pyodide/pyodide/blob/main/docs/project/changelog.md) entry
- [x] Add / update tests

Add cryptography, openssl, and _ssl packages. Resolves #761.

ssl passes 46/168 tests. 108 fail due to inability to start a socket and another 14 failing with attribute errors due to missing library functions.

### Checklists

- [x] Add a [CHANGELOG](https://github.com/pyodide/pyodide/blob/main/docs/project/changelog.md) entry
- [x] Add / update tests

# from: http://stackoverflow.com/questions/17112550/python-and-numba-for-vectorized-functions
# setup: import numpy as np ; N = 100000 ; a, b, c = np.random.rand(N), np.random.rand(N), np.random.rand(N)
# run: vibr_energy(a, b, c)

# pythran export vibr_energy(float64[], float64[], float64[])
import numpy


def vibr_energy(harmonic, anharmonic, i):
    return numpy.exp(-harmonic * i - anharmonic * (i**2))

# from: http://stackoverflow.com/questions/17112550/python-and-numba-for-vectorized-functions
# setup: import numpy as np ; N = 100000 ; a, b, c = np.random.rand(N), np.random.rand(N), np.random.rand(N)
# run: vibr_energy(a, b, c)

# pythran export vibr_energy(float64[], float64[], float64[])
import numpy


def vibr_energy(harmonic, anharmonic, i):
    return numpy.exp(-harmonic * i - anharmonic * (i**2))
