Streaming KMeans [MLLIB][SPARK-3254]

This adds a Streaming KMeans algorithm to MLlib. It uses an update rule that generalizes the mini-batch KMeans update to incorporate a decay factor, which allows past data to be forgotten. The decay factor can be specified explicitly, or via a more intuitive "fractional decay" setting, in units of either data points or batches.

The PR includes:
- StreamingKMeans algorithm with decay factor settings
- Usage example
- Additions to documentation clustering page
- Unit tests of basic behavior and decay behaviors

@tdas @mengxr @rezazadeh
1. line too wide
2. `alpha` is a constant, independent of `n_t` and `m_t`. So we treat either `batch` or `point` as a time unit. Using `point` as the time unit is not mentioned here. It is okay to put a link to the generated Scala doc.