text: Title: Convert ScatterVisualizer to a mixin
  Body: **Describe the solution you'd like**
  Convert `ScatterVisualizer`, currently in contrib, into a YB mixin.
  
  **Is your feature request related to a problem? Please describe.**
  Besides `ScatterVisualizer` many YB visualizers implement some kind of scatterplot: 
  
  - [RadViz](https://github.com/DistrictDataLabs/yellowbrick/blob/bf5bd3f297ee6fdb589e457ecb0f954f085a5bf8/yellowbrick/features/radviz.py#L222)
  - [Dispersion](https://github.com/DistrictDataLabs/yellowbrick/blob/25f1b9a6f3bdf1fa1a4cb88412b3ee095488d3ff/yellowbrick/text/dispersion.py#L106)
  - [Manifold](https://github.com/DistrictDataLabs/yellowbrick/blob/75b0f6aa245f17844c1701383df0e02bc37875f4/yellowbrick/features/manifold.py#L388)
  - [JointPlotVisualizer](https://github.com/DistrictDataLabs/yellowbrick/blob/9e8f76805132215aa77ee5a0a1ff20ca7034faf9/yellowbrick/features/jointplot.py#L247)
  - [PCADecomposition](https://github.com/DistrictDataLabs/yellowbrick/blob/4d0483edd1468855df714f77bca1a0a93f01cbce/yellowbrick/features/pca.py#L157)
  - [ResidualsPlot](https://github.com/DistrictDataLabs/yellowbrick/blob/718fc5b6f66a89527ee05f12de6dbe298b919e7f/yellowbrick/regressor/residuals.py#L173)
  - [PredictionError](https://github.com/DistrictDataLabs/yellowbrick/blob/718fc5b6f66a89527ee05f12de6dbe298b919e7f/yellowbrick/regressor/residuals.py#L173)
  - [TSNE](https://github.com/DistrictDataLabs/yellowbrick/blob/5ae6e320615ea32e6d1c201bdc9b551175c1e42b/yellowbrick/text/tsne.py#L336)
  
  And it's likely that future visualizers may also require some form of scatterplot. In order to implement these in a more uniform and predictable way, it would be convenient to convert the current `ScatterVisualizer`, which was recently moved to contrib, into a YB mixin that could both serve as a base for the above visualizers and support future development.
  
  See discussion in #475 