Infinite Loop in K-means when relocating empty clusters

### Describe the bug

Relocating empty clusters in Kmeans is not working as expected in this edge case, where :
- There is duplicate entries.
- The number of clusters is equal to the number of entries.
- Very particular initial positions.

Kmeans is stuck in a infinite loop, and the only way to end it is the max number of iterations. 

I have suggestions to improve the relocation of empty clusters : 
- When selecting an entry to fill an empty cluster (the entry that has max_dist), we should not select an entry in a cluster that contains only 1 entry.
- After each relocation of an empty clusters, Centers needs to be updated.

### Steps/Code to Reproduce

```python
import numpy as np
from sklearn.cluster import KMeans

X = np.array([
    [100, 100], [100, 102], [106, 100], [107, 101], [107, 101], [108, 100]
])
init = np.array([
    [98, 104], [103, 100], [109, 102], [110, 100], [111, 100], [112, 100]
])
kmeans = KMeans(
    n_clusters=6,
    init=init,
    random_state=0,
    verbose=True,
    algorithm='lloyd',
    max_iter=10_000
).fit(X)
```

### Expected Results

We should only perform 1 iteration

```
Initialization complete
Iteration 0, inertia 40.0.
Iteration 1, inertia 0.0.
```

### Actual Results

Kmeans is stuck in an infinite loop

```
Initialization complete
Iteration 0, inertia 40.0.
Iteration 1, inertia 0.0.
Iteration 2, inertia 0.0.
Iteration 3, inertia 0.0.
Iteration 4, inertia 0.0.
Iteration 5, inertia 0.0.
Iteration 6, inertia 0.0.
Iteration 7, inertia 0.0.
Iteration 8, inertia 0.0.
Iteration 9, inertia 0.0.
Iteration 10, inertia 0.0.
Iteration 11, inertia 0.0.
Iteration 12, inertia 0.0.
Iteration 13, inertia 0.0.
Iteration 14, inertia 0.0.
Iteration 15, inertia 0.0.
Iteration 16, inertia 0.0.
Iteration 17, inertia 0.0.
Iteration 18, inertia 0.0.
Iteration 19, inertia 0.0.
```

### Versions

```shell
System:
   python: 3.9.0
   machine: Windows-10

Python dependencies:
      sklearn: 1.3.2
          pip: 20.2.3
   setuptools: 49.2.1
        numpy: 1.25.1
        scipy: 1.11.4
       Cython: None
       pandas: 2.0.3
   matplotlib: 3.7.2
       joblib: 1.3.2
threadpoolctl: 3.2.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: openblas
    num_threads: 12
         prefix: libopenblas
        version: 0.3.23
threading_layer: pthreads

       user_api: openmp
   internal_api: openmp
    num_threads: 12
         prefix: vcomp
        version: None

       user_api: blas
   internal_api: openblas
    num_threads: 12
         prefix: libopenblas
        version: 0.3.21.dev
threading_layer: pthreads
```

COMMENT:
> Kmeans is stuck in a infinite loop, and the only way to end it is the max number of iterations.

Hi @brmel, I used the code example you provided, except I omitted the `max_iterations` parameter:

```
import numpy as np
from sklearn.cluster import KMeans

X = np.array([[100, 100], [100, 102], [106, 100], [107, 101], [107, 101], [108, 100]])
InitialPos = np.array([[98, 104], [103, 100], [109,102], [110,100], [111,100], [112,100]])
kmeans = KMeans(n_clusters=6, init=InitialPos, random_state=0, verbose=True, algorithm='lloyd').fit(X)
```

In this case, Kmeans isn't stuck in an infinite loop, but throws a ConvergenceWarning after 300 iterations:

```
/usr/local/lib/python3.10/dist-packages/sklearn/cluster/_kmeans.py:1416: FutureWarning: The default value of `n_init` will change from 10 to 'auto' in 1.4. Set the value of `n_init` explicitly to suppress the warning
  super()._check_params_vs_input(X, default_n_init=10)
/usr/local/lib/python3.10/dist-packages/sklearn/cluster/_kmeans.py:1416: RuntimeWarning: Explicit initial center position passed: performing only one init in KMeans instead of n_init=10.
  super()._check_params_vs_input(X, default_n_init=10)
Initialization complete
Iteration 0, inertia 40.0.
Iteration 1, inertia 0.0.
Iteration 2, inertia 0.0.
...
Iteration 297, inertia 0.0.
Iteration 298, inertia 0.0.
Iteration 299, inertia 0.0.
/usr/local/lib/python3.10/dist-packages/sklearn/base.py:1152: ConvergenceWarning: Number of distinct clusters (5) found smaller than n_clusters (6). Possibly due to duplicate points in X.
  return fit_method(estimator, *args, **kwargs)
```

Labels: Bug