TSNE is broken in pyodide

While testing `pyscript` and thus `pyodide`, it seems that `TSNE` is broken.
The reason is that we are specifically using 32 bits internally that do not work with `pyodide`.
I think that we should make sure that `TSNE` preserve dtype in 64 bits and 32 bits without silently reducing the numerical precision.

The current workaround is to use `method="exact"` and externalize the initialization and pass a 64 bits NumPy array. Solely this case preserves the computation in 64 bits.

COMMENT:
So if you check the javascript console, you will get the traceback:

```pytb
Stack (most recent call first): [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/scipy/linalg/_misc.py", line 154 in norm [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 399 in _gradient_descent [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 1056 in _tsne [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 1004 in _fit [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 1108 in fit_transform [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "<ipython-input-2-a9c2abaf5e8e>", line 5 in <cell line: 4> [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3398 in run_code [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3338 in run_ast_nodes [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3135 in run_cell_async [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/async_helpers.py", line 129 in _pseudo_sync_runner [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2936 in _run_cell [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2881 in run_cell [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/pyolite/kernel.py", line 85 in run [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/asyncio/tasks.py", line 232 in __step [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/asyncio/tasks.py", line 315 in __wakeup [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/asyncio/events.py", line 80 in _run [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/pyodide/webloop.py", line 151 in run_handle [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
RuntimeError: indirect call signature mismatch [pyodide.asm.js line 14 > WebAssembly.instantiate:85101:1](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js%20line%2014%20%3E%20WebAssembly.instantiate)Stack (most recent call first): [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/scipy/linalg/_misc.py", line 154 in norm [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 399 in _gradient_descent [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 1056 in _tsne [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 1004 in _fit [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/sklearn/manifold/_t_sne.py", line 1108 in fit_transform [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "<ipython-input-2-a9c2abaf5e8e>", line 5 in <cell line: 4> [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3398 in run_code [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3338 in run_ast_nodes [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3135 in run_cell_async [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/async_helpers.py", line 129 in _pseudo_sync_runner [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2936 in _run_cell [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 2881 in run_cell [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/pyolite/kernel.py", line 85 in run [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/asyncio/tasks.py", line 232 in __step [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/asyncio/tasks.py", line 315 in __wakeup [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/asyncio/events.py", line 80 in _run [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
  File "/lib/python3.10/site-packages/pyodide/webloop.py", line 151 in run_handle [pyodide.asm.js:14:294679](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js)
RuntimeError: indirect call signature mismatch [pyodide.asm.js line 14 > WebAssembly.instantiate:85101:1](https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.asm.js%20line%2014%20%3E%20WebAssembly.instantiate)
```

Labels: Bug